2016-05-22 20 views
5

Was ich bis jetzt getan habe

Ich lese the installation guide.Erstellen von MongoDB C-Treiber in Windows

Installierte OpenSSL-Bibliothek für Windows nach dem Herunterladen a setup file.

Heruntergeladen und extrahiert ein Mongo C-Treiberverzeichnis von GitHub.

Installierte CMake für Windows nach dem Download von CMake web site.

Ging zu mongo-c-driver/src/libbson und führen cmake -G "Visual Studio 14 2015 Win64" und es druckt (vielleicht) Erfolg.

D:\works\test\mongo-c-driver\src\libbson>cmake -G "Visual Studio 14 2015 Win64" Current version (from VERSION_CURRENT file): 1.4.0-dev Previous release (from VERSION_RELEASED file): 1.3.5 -- Check if the system is big endian -- Searching 16 bit integer -- Looking for sys/types.h -- Looking for sys/types.h - found -- Looking for stdint.h -- Looking for stdint.h - found -- Looking for stddef.h -- Looking for stddef.h - found -- Check size of unsigned short -- Check size of unsigned short - done -- Using unsigned short -- Check if the system is big endian - little endian -- Looking for snprintf -- Looking for snprintf - found -- Looking for _set_output_format -- Looking for _set_output_format - not found -- Performing Test BSON_HAVE_TIMESPEC -- Performing Test BSON_HAVE_TIMESPEC - Success -- struct timespec found -- Configuring done -- Generating done -- Build files have been written to: D:/works/test/mongo-c-driver/src/libbson

Ausgeführt msbuild ALL_BUILD.vcxproj und druckt den Erfolg.

Das Problem

Wir gingen zum mongo-c-driver und `cmake -G "Visual Studio 14 2015 Win64" und druckt Fehler wie folgt ausführen.

-- Found BSON: BSON-NOTFOUND;ws2_32
-- Found OpenSSL: optimized;D:/apps/OpenSSL-Win64/lib/VC/ssleay32MD.lib;debug;D:/apps/OpenSSL-Win64/lib/VC/ssleay32MDd.lib;optimized;D:/apps/OpenSSL-Win64/lib/VC/libeay32MD.lib;debug;D:/apps/OpenSSL-Win64/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) -- Configuring incomplete, errors occurred! See also "D:/works/test/mongo-c-driver/CMakeFiles/CMakeOutput.log".

Ich suchte nach sasl.h von meinen Festplatten, aber es gibt keine. Ich suchte auch von OpenSSL GitHub, aber es hat nicht sasl.h

Ich heruntergeladen und Cyrus-sasl von here geöffnet, aber ich bin mit ihm fest. Ich weiß nicht, was ich damit machen soll.

Wie kann ich den erfolgreichen Build von MongoDB C Driver?

Antwort

3

Es scheint, dass der libsasl2-Anschluss an Windows nicht vollständig ist. Obwohl ich libsasl zum kompilieren bekommen habe, wurde libsasl2 nicht erzeugt. Es scheint, dass SASL von MongoDB C Driver für Kerberos verwendet wird. Ich weiß nicht, ob sie versucht haben, Kerberos mit dem C-Treiber unter Windows ohne einen Port der libsasl2-Bibliothek arbeiten zu lassen.

Ich war jedoch in der Lage, den MongoDB C-Treiber schließlich kompilieren zu bekommen. Ich habe zunächst versucht, mit Unterverzeichnissen von C: \ zu kompilieren, im Gegensatz zu C: \ mongo-c-driver usw., aber das funktionierte nicht gut, aber als ich mit der Verzeichnisstruktur in der Dokumentation kompilierte, war die Kompilierung erfolgreich.

Um es kompilieren zu lassen, habe ich die SASL-Bibliothek in der Kompilierung deaktiviert. Ich denke nicht, dass es erforderlich sein wird, wenn Sie Kerberos verwenden müssen. Ich musste SASL zunächst explizit deaktivieren (vielleicht wegen der Verwendung von 64 Bit) - das kann mit -DENABLE_SASL=no beim Kompilieren des Mongo-C-Treibers getan werden.

Hier sind die Schritte:

Got Treiberquelle auf dieser Seite: https://github.com/mongodb/mongo-c-driver/releases (1.3.5)

Got Cmake von https://cmake.org/download/

installiert Cmake das Windows Installer verwenden, das Hinzufügen Cmake auf den Weg für alle Benutzer. Ich musste mich abmelden und wieder anmelden, um den Pfad zum Update zu erhalten.

Dann habe ich die Quelle mongo-c-driver-1.3.5 nach c: \ mongo-c-driver-1.3 kopiert.Dann werden 5

,

ich die Visual Studio MSBuild Eingabeaufforderung verwendet, begann mit Ausführen als 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". 

Es stellt sich heraus, dass der C-Compiler nicht mit einer Standard-Installation von Visual Studio installiert ist, so Ich musste C++ - Komponente von Visual Studio installieren. Ich habe C++ Common Tools, aber nicht MFC für C++ oder XP Support installiert. Das heißt es 3 GB Speicherplatz verwenden würde (begann bei 39,5, endete bei 37,0, also 2,5 GB)

Sobald das installiert wurde:

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 war nicht vorhanden, so erhaltene I 32 bit Win32 OpenSSL v1.0.2h von http://slproweb.com/products/Win32OpenSSL.html

Dann habe ich OpenSSL installiert. Geänderte Installationsverzeichnis C: \ work \ OpenSSL-Win32 und ließ ich den OpenSSL-Installer die Binärdateien in das Windows-Systemverzeichnis

Jetzt

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 

, installieren und jetzt die Mongo-c-Fahrer wurde gebaut. Ich kann es mit Visual C++ verwenden, um eine Verbindung zu meinem MongoDB-Server mit SSL herzustellen.

Jetzt versuche ich herauszufinden, wie Embarcadero RADStudio C++ Builder den neuen mongo-c-Treiber verwenden kann. Das Kopieren der .dlls in den Anwendungsordner führt zu einem Abbruch in der bson dll. Der Stack-Trace sieht wie folgt aus:

Screenshot showing stack trace

2

Es gibt zwei Fehler in dieser Ausgabe. - libbson muss installiert und verfügbar sein - mongoc ist so konfiguriert, gegen Cyrus SASL, in welchem ​​Fall es muss

Beide sind leicht reparierbar und späteren Versionen von mongoc installiert und verfügbar sein wird, nicht mehr Fehler, wenn Cyrus SASL oder OpenSSL isn Diese Option ist nicht verfügbar, verwendet jedoch stattdessen die nativen Windows-Implementierungen. Der Treiber kann auch ohne diese konfiguriert werden. Die verfügbaren Konfigurationsoptionen und Werte sind:

-DENABLE_SASL=[CYRUS|SSPI|AUTO|OFF] 
-DENABLE_SSL=[OPENSSL|WINDOWS|DARWIN|AUTO|OFF] 

Leider ist die cmake Installation von mongoc wird die gebündelte libbson für Sie nicht automatisch installieren, dies in der Zukunft festgelegt werden kann, aber jetzt müssen Sie es separat installieren.

Kurz gesagt, die mongoc-Treiber unter Windows zu installieren:

Herunterladen & Extrakt mongoc (https://github.com/mongodb/mongo-c-driver/releases). mongoc releases kommt mit libbson Quellen, so dass sie nicht separat heruntergeladen werden müssen. Geben Sie den libbson Verzeichnis „src/libbson“ und dann:

cd c:/path/to/mongoc/ 
cd src/libbson 

# Configure and install libbson 
cmake.exe -G "Visual Studio 14 2015 Win64" \ 
    -DCMAKE_INSTALL_PREFIX=c:/mongoc 
msbuild.exe ALL_BUILD.vcxproj 
msbuild.exe INSTALL.vcxproj # Installs libbson 

cd ../.. # Go back to the root folder of the release sources 

# Configure and install mongoc 
cmake.exe -G "Visual Studio 14 2015 Win64" \ 
    -DCMAKE_INSTALL_PREFIX=c:/mongoc \ 
    -DCMAKE_PREFIX_PATH=c:/mongoc/lib/cmake \ 
    -DENABLE_AUTOMATIC_INIT_AND_CLEANUP:BOOL=OFF \ 
    -DENABLE_SSL=WINDOWS \ # Use Windows Native TLS, rather then OpenSSL 
    -DENABLE_SASL=SSPI # Use Windows Native SSPI, rather then Cyrus SASL 
msbuild.exe ALL_BUILD.vcxproj 
msbuild.exe INSTALL.vcxproj 
+0

Das funktioniert zwar (danke!), Denken Sie daran, dass es standardmäßig Debug-Konfiguration ... andere configs zu bauen (verfügbar sind: ' Debug ',' Release', 'MinSizeRel' und' RelWithDebInfo') fügen ein entsprechendes Argument zu Msbuild-Befehlen hinzu, z 'msbuild.exe ALL_BUILD.vcxproj/p: Konfiguration = Freigeben',' msbuild.exe INSTALL.vcxproj/p: Konfiguration = Freigeben' –