sql >> Database teknologi >  >> NoSQL >> MongoDB

Opbygning af MongoDB C-driver i Windows

Det ser ud til, at libsasl2-porten til Windows ikke er komplet. Selvom jeg i sidste ende fik libsasl til at kompilere, var der ingen libsasl2 produceret. Det ser ud til, at SASL bruges af MongoDB C Driver til Kerberos. Jeg ved ikke, om de har forsøgt at få Kerberos til at arbejde med C-driveren på Windows uden en port på libsasl2-biblioteket.

Jeg var dog i stand til at få MongoDB C-driveren til i sidste ende at kompilere. Jeg forsøgte i første omgang at kompilere ved hjælp af undermapper af C:\, i modsætning til C:\mongo-c-driver osv., men det fungerede ikke godt, men da jeg kompilerede ved hjælp af mappestrukturen i dokumentationen, lykkedes det.

For at få det til at kompilere, deaktiverede jeg SASL-biblioteket i kompileringen. Jeg tror ikke, det bliver nødvendigt, medmindre du skal bruge Kerberos. Jeg var oprindeligt nødt til eksplicit at deaktivere SASL (måske på grund af at bruge 64 bit) -- det kan gøres med -DENABLE_SASL=no når du kompilerer mongo-c-driveren.

Her er trinene:

Fik driverkilde fra denne side:https://github.com/mongodb/mongo- c-driver/udgivelser (1.3.5)

Fik cmake fra https://cmake.org/download/

Installerede cmake ved hjælp af Windows-installationsprogrammet, tilføjede cmake til stien for alle brugere. Jeg var nødt til at logge ud og logge ind igen for at få stien til at opdatere.

Derefter kopierede jeg mongo-c-driver-1.3.5-kilden til c:\mongo-c-driver-1.3.5

Derefter

Jeg brugte Visual Studio MSBuild Command Prompt, startede med Kør som 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".

Det viser sig, at C-kompilatorerne ikke er installeret med en standardinstallation af Visual Studio, så jeg var nødt til at installere C++-komponenten i Visual Studio. Jeg installerede C++ Common Tools, men ikke MFC til C++ eller XP Support. Når det er sagt, ville den bruge 3 GB diskplads (startede ved 39,5, sluttede ved 37,0, så 2,5 GB brugt)

Når det blev installeret:

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 var ikke til stede, så jeg fik 32 bit Win32 OpenSSL v1.0.2h fra http://slproweb. com/products/Win32OpenSSL.html

Derefter installerede jeg OpenSSL. Ændrede installationsmappe til C:\work\OpenSSL-Win32, og jeg tillod OpenSSL-installationsprogrammet at installere binære filer i Windows-systemmappen

Nå,

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

Og nu er mongo-c-driveren blevet bygget. Jeg kan bruge det med Visual C++ til at oprette forbindelse til min MongoDB-server ved hjælp af ssl.

Nu prøver jeg at finde ud af, hvordan man får Embarcadero RADStudio C++ Builder til at bruge den nye mongo-c-driver. Bare kopiering af .dll'erne til programmets mappe resulterer i en afbrydelse i bson dll'en. Staksporingen ser sådan ud:



  1. Håndtering af asynkrone databaseforespørgsler i node.js og mongodb

  2. Grundlæggende mellem datoforespørgsler $gte, $lte osv

  3. mongoimport CSV med pymongo

  4. Modellering af mange-til-mange:gennem med Mongoid/MongoDB