MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Budowanie sterownika MongoDB C w systemie Windows

Wygląda na to, że port libsasl2 do systemu Windows nie jest kompletny. Chociaż ostatecznie skompilowałem libsasl, nie było produkowanego libsasl2. Wygląda na to, że SASL jest używany przez sterownik MongoDB C dla Kerberos. Nie wiem, czy próbowali uruchomić Kerberos ze sterownikiem C w systemie Windows bez portu biblioteki libsasl2.

Udało mi się jednak ostatecznie skompilować sterownik MongoDB C. Początkowo próbowałem kompilować przy użyciu podkatalogów C:\, w przeciwieństwie do C:\mongo-c-driver itp., ale to nie działało dobrze, ale kiedy kompilowałem przy użyciu struktury katalogów w dokumentacji, kompilacja się powiodła.

Aby go skompilować, wyłączyłem bibliotekę SASL w kompilacji. Nie sądzę, że będzie to potrzebne, chyba że musisz użyć Kerberos. Początkowo musiałem jawnie wyłączyć SASL (być może z powodu użycia 64-bitowego) - można to zrobić za pomocą -DENABLE_SASL=no podczas kompilacji sterownika mongo-c.

Oto kroki:

Pobrano źródło sterownika z tej strony:https://github.com/mongodb/mongo- c-sterownik/wydania (1.3.5)

Otrzymałem cmake z https://cmake.org/download/

Zainstalowano cmake za pomocą instalatora Windows, dodając cmake do ścieżki dla wszystkich użytkowników. Musiałem się wylogować i zalogować ponownie, aby uzyskać ścieżkę aktualizacji.

Następnie skopiowałem źródło mongo-c-driver-1.3.5 do c:\mongo-c-driver-1.3.5

Następnie

Użyłem wiersza polecenia programu Visual Studio MSBuild, zacząłem od Uruchom jako administrator

C:\mongo-c-driver-1.3.5\src\libbson>cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -G "Visual Studio 14"
-- The C compiler identification is unknown
-- The CXX compiler identification is unknown
CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_C_COMPILER could be found.

CMake Error at CMakeLists.txt:3 (project):
  No CMAKE_CXX_COMPILER could be found.

-- Configuring incomplete, errors occurred!
See also "C:/mongo-c-driver-1.3.5/src/libbson/CMakeFiles/CMakeOutput.log".
See also "C:/mongo-c-driver-1.3.5/src/libbson/CMakeFiles/CMakeError.log".

Okazuje się, że kompilatory C nie są instalowane ze standardową instalacją Visual Studio, więc musiałem zainstalować komponent C++ Visual Studio. Zainstalowałem C++ Common Tools, ale nie MFC for C++ ani XP Support. Powiedział, że zużyje 3 GB miejsca na dysku (zaczynając od 39,5, kończąc na 37,0, więc wykorzystano 2,5 GB)

Po zainstalowaniu:

cd \mongo-c-driver-1.3.5\src\libbson
cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -G "Visual Studio 14" .
msbuild.exe ALL_BUILD.vcxproj
msbuild.exe INSTALL.vcxproj
cd ..\..

C:\mongo-c-driver-1.3.5>cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -DENABLE_SSL=WINDOWS -DBSON_ROOT_DIR=C:\libmongoc -G "Visual Studio 14" .
-- The C compiler identification is MSVC 19.0.23026.0
-- The CXX compiler identification is MSVC 19.0.23026.0
-- Check for working C compiler using: Visual Studio 14 2015
-- Check for working C compiler using: Visual Studio 14 2015 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler using: Visual Studio 14 2015
-- Check for working CXX compiler using: Visual Studio 14 2015 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found BSON: C:/libmongoc/lib/bson-1.0.lib;ws2_32
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing:  OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)
-- Searching for sasl/sasl.h
--   Not found (specify -DCMAKE_INCLUDE_PATH=C:/path/to/sasl/include for SASL support)
-- Searching for libsasl2
--   Not found (specify -DCMAKE_LIBRARY_PATH=C:/path/to/sasl/lib for SASL support)
Current version (from VERSION_CURRENT file): 1.3.5
-- Configuring done
-- Generating done
-- Build files have been written to: C:/mongo-c-driver-1.3.5

OpenSSL nie był obecny, więc uzyskałem 32-bitowy Win32 OpenSSL v1.0.2h z http://slproweb. com/products/Win32OpenSSL.html

Następnie zainstalowałem OpenSSL. Zmieniłem katalog instalacyjny na C:\work\OpenSSL-Win32 i pozwoliłem instalatorowi OpenSSL na zainstalowanie binariów w katalogu systemowym Windows

Teraz

C:\mongo-c-driver-1.3.5>cmake -DCMAKE_INSTALL_PREFIX=C:\libmongoc -DENABLE_SSL=WINDOWS -DBSON_ROOT_DIR=C:\libmongoc -G "Visual Studio 14" .
-- Found OpenSSL: optimized;C:/work/OpenSSL-Win32/lib/VC/ssleay32MD.lib;debug;C:/work/OpenSSL-Win32/lib/VC/ssleay32MDd.lib;optimized;C:/work/OpenSSL-Win32/lib/VC/libeay32MD.lib;debug;C:/work/OpenSSL-Win32/lib/VC/libeay32MDd.lib (found version "1.0.2h")
-- Searching for sasl/sasl.h
--   Not found (specify -DCMAKE_INCLUDE_PATH=C:/path/to/sasl/include for SASL support)
-- Searching for libsasl2
--   Not found (specify -DCMAKE_LIBRARY_PATH=C:/path/to/sasl/lib for SASL support)
Current version (from VERSION_CURRENT file): 1.3.5
-- Configuring done
-- Generating done
-- Build files have been written to: C:/mongo-c-driver-1.3.5

C:\mongo-c-driver-1.3.5>

msbuild.exe ALL_BUILD.vcxproj
(lots of output, with some yellow warnings, but no red errors)

msbuild.exe INSTALL.vcxproj

A teraz zbudowano mongo-c-driver. Mogę go używać z Visual C++, aby połączyć się z moim serwerem MongoDB za pomocą ssl.

Teraz próbuję dowiedzieć się, jak sprawić, by Embarcadero RADStudio C++ Builder używał nowego sterownika mongo-c-driver. Samo skopiowanie plików .dll do folderu aplikacji powoduje przerwanie działania biblioteki bson dll. Ślad stosu wygląda tak:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Pobierz dane z 2 kolekcji w mongodb w jednym zapytaniu

  2. schemat mongo (osadzanie a odniesienie)

  3. Jak uzyskać liczbę wystąpień słowa kluczowego w ciągu za pomocą mongoDb

  4. Jak „mongoose” radzi sobie z dodawaniem dokumentów, których FIELDS są __NOT__ częścią schematu?

  5. PyMongo źle zachowuje się z liczbami zmiennoprzecinkowymi