2016-05-22 2 views
5

Что я сделал до сих пор

Я читал the installation guide.Строительство MongoDB C Драйвер в Windows

Установлена ​​библиотека OpenSSL для Windows после загрузки a setup file.

Скачан и извлечен каталог драйверов Mongo C от GitHub.

Установленный CMake для Windows после загрузки с CMake web site.

Пошел до mongo-c-driver/src/libbson и запустил cmake -G "Visual Studio 14 2015 Win64", и он печатает (может быть) успех.

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

Выполненная msbuild ALL_BUILD.vcxproj и печатает успех.

Проблема

Пошел mongo-c-driver и запустить `Cmake -G "Visual Studio 14 2015 Win64" и печатает ошибки, как это.

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

Я искал sasl.h из моих дисков, но там нет. Я также искал его от OpenSSL GitHub, но у него нет sasl.h

Я загрузил и открыл cyrus-sasl от here, но я застрял с ним. Я не знаю, что с этим делать.

Как я могу сделать успешную сборку драйвера MongoDB C?

ответ

3

Похоже, что порт libsasl2 для Windows не является полным. Хотя я в конечном итоге получил libsasl для компиляции, не было создано libsasl2. Похоже, что SASL используется MongoDB C Driver для Kerberos. Я не знаю, пытались ли они заставить Kerberos работать с C-драйвером на Windows без порта библиотеки libsasl2.

Я, однако, смог в конечном итоге скомпилировать драйвер MongoDB C. Сначала я попытался скомпилировать, используя подкаталоги C: \, в отличие от C: \ mongo-c-driver и т. Д., Но это не сработало, но когда я скомпилировал, используя структуру каталогов в документации, компиляция прошла успешно.

Чтобы скомпилировать его, я отключил библиотеку SASL в компиляции. Я не думаю, что это будет необходимо, если вам не нужно использовать Kerberos. Сначала мне пришлось явно отключить SASL (возможно, из-за использования 64-битного) - это можно сделать с помощью -DENABLE_SASL=no при компиляции mongo-c-драйвера.

Вот шаги:

Got источник драйвера с этой страницы: https://github.com/mongodb/mongo-c-driver/releases (1.3.5)

Got CMake от https://cmake.org/download/

Installed CMake с помощью установщика Windows, добавляя CMake в путь для всех пользователей. Мне пришлось выйти из системы и войти в систему, чтобы получить путь к обновлению.

Затем я скопировал источник mongo-c-driver-1.3.5 в c: \ mongo-c-driver-1.3.5

Затем

Я использовал Visual Studio MSBuild Командная строка началась с Run As 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". 

Оказывается, что компиляторы не установлены со стандартной установкой Visual Studio, так Мне пришлось установить компонент C++ Visual Studio. Я установил C++ Common Tools, но не MFC для C++ и XP. Тем не менее было бы использовать 3 Гб дискового пространства (начал в 39.5, закончилось в 37,0, так что 2,5 ГБ используется)

После того, что было установлено:

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 не присутствовал, так что получается 32 бит Win32 OpenSSL v1.0.2h от http://slproweb.com/products/Win32OpenSSL.html

Затем я установил OpenSSL. Изменен каталог установки на C: \ работа \ OpenSSL-Win32, и я позволил инсталлятор OpenSSL для установки бинарных файлов в системный каталог Windows,

Теперь

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 

А теперь Монго-с-водитель был построен. Я могу использовать его с Visual C++ для подключения к моему серверу MongoDB с помощью ssl.

Теперь, я пытаюсь выяснить, как получить Embarcadero RADStudio C++ Builder, чтобы использовать новый mongo-c-драйвер. Простое копирование .dll в папку приложения приводит к прерыванию в dll bson. Трассировка стека выглядит следующим образом:

Screenshot showing stack trace

2

Есть две ошибки в этой продукции. - libbson должен быть установлен и доступен - mongoc настроен против Cyrus SASL, в этом случае он должен быть установлен и доступен

Оба легко поправимо, и более поздние версии mongoc больше не будет ошибкой, если Cyrus SASL или OpenSSL ISN 't доступно, но вместо этого будет использовать собственные версии Windows. Драйвер также может быть настроен без них. Доступные варианты конфигурации и значения:

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

К сожалению cmake установка mongoc не будет автоматически устанавливать комплектный libbson для вас, это может быть исправлено в будущем, но сейчас вам нужно установить его отдельно.

Короче говоря, чтобы установить драйвер mongoc на Windows:

Скачать & экстракт mongoc (https://github.com/mongodb/mongo-c-driver/releases). выпуски mongoc поставляются с источниками libbson, поэтому нет необходимости загружать их отдельно. Введите каталог libbson, «SRC/libbson», а затем:

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

Хотя это работает (спасибо!), Имейте в виду, что он по умолчанию конфигурации отладки ... Для того, чтобы построить другие конфиги (доступны: ' Debug ',' Release', 'MinSizeRel' и' RelWithDebInfo') добавляют соответствующий аргумент командам msbuild, например 'msbuild.exe ALL_BUILD.vcxproj/p: Configuration = Release',' msbuild.exe INSTALL.vcxproj/p: Configuration = Release' –

 Смежные вопросы

  • Нет связанных вопросов^_^