sql >> Databasteknik >  >> NoSQL >> MongoDB

Bygga MongoDB C-drivrutin i Windows

Det verkar som om libsasl2-porten till Windows inte är komplett. Även om jag till slut fick libsasl att kompilera, producerades ingen libsasl2. Det verkar som att SASL används av MongoDB C Driver för Kerberos. Jag vet inte om de har försökt få Kerberos att arbeta med C-drivrutinen på Windows utan en port i libsasl2-biblioteket.

Jag kunde dock få MongoDB C-drivrutinen att till slut kompilera. Jag försökte först att kompilera med hjälp av underkataloger till C:\, till skillnad från C:\mongo-c-drivrutin etc., men det fungerade inte bra, men när jag kompilerade med katalogstrukturen i dokumentationen lyckades kompileringen.

För att få det att kompilera inaktiverade jag SASL-biblioteket i kompileringen. Jag tror inte att det kommer att behövas om du inte behöver använda Kerberos. Jag var först tvungen att uttryckligen inaktivera SASL (kanske på grund av att jag använde 64-bitars) -- det kan göras med -DENABLE_SASL=no när du kompilerar mongo-c-drivrutinen.

Här är stegen:

Fick drivrutinskälla från den här sidan:https://github.com/mongodb/mongo- c-driver/releases (1.3.5)

Fick cmake från https://cmake.org/download/

Installerade cmake med hjälp av Windows-installeraren, la cmake till sökvägen för alla användare. Jag var tvungen att logga ut och logga in igen för att få sökvägen att uppdatera.

Sedan kopierade jag mongo-c-driver-1.3.5-källan till c:\mongo-c-driver-1.3.5

Sedan,

Jag använde Visual Studio MSBuild Command Prompt, började med Kör som administratör

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".

Det visade sig att C-kompilatorerna inte är installerade med en standardinstallation av Visual Studio, så jag var tvungen att installera C++-komponenten i Visual Studio. Jag installerade C++ Common Tools, men inte MFC för C++ eller XP Support. Som sagt att den skulle använda 3 GB diskutrymme (började vid 39,5, slutade vid 37,0, så 2,5 GB användes)

När det väl har installerats:

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 fanns inte, så jag fick 32 bitars Win32 OpenSSL v1.0.2h från http://slproweb. com/products/Win32OpenSSL.html

Sedan installerade jag OpenSSL. Ändrade installationskatalogen till C:\work\OpenSSL-Win32, och jag tillät OpenSSL-installationsprogrammet att installera binärfilerna i Windows-systemkatalogen

Nu,

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

Och nu har mongo-c-föraren byggts. Jag kan använda den med Visual C++ för att ansluta till min MongoDB-server med ssl.

Nu försöker jag ta reda på hur man får Embarcadero RADStudio C++ Builder att använda den nya mongo-c-drivrutinen. Bara att kopiera .dll-filerna till programmets mapp resulterar i en avbrytning i bson dll. Stackspåret ser ut så här:



  1. När ska man använda GridFS på MongoDB?

  2. Hur avbryter jag en fråga i mongo JavaScript-skal

  3. NotUniqueError:Försökte spara dubbletter av unika nycklar

  4. MongoDB $toDate