MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Изграждане на MongoDB C драйвер в Windows

Изглежда, че портът на libsasl2 към Windows не е завършен. Въпреки че в крайна сметка успях да компилирам libsasl, не беше създаден libsasl2. Изглежда, че SASL се използва от MongoDB C драйвер за Kerberos. Не знам дали са се опитвали да накарат Kerberos да работи с C драйвера на Windows без порт на библиотеката libsasl2.

Въпреки това успях да накарам MongoDB C драйвера да се компилира в крайна сметка. Първоначално се опитах да компилирам с помощта на поддиректории на C:\, за разлика от C:\mongo-c-driver и т.н., но това не работи добре, но когато компилирах, използвайки структурата на директорията в документацията, компилирането успя.

За да го накарам да компилира, деактивирах SASL библиотеката в компилацията. Не мисля, че ще е необходимо, освен ако не трябва да използвате Kerberos. Първоначално трябваше изрично да деактивирам SASL (може би поради използването на 64 бита) -- това може да стане с -DENABLE_SASL=no при компилиране на mongo-c-driver.

Ето стъпките:

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

Получих cmake от https://cmake.org/download/

Инсталиран cmake с помощта на инсталатора на Windows, добавяне на cmake към пътя за всички потребители. Трябваше да изляза и да вляза отново, за да получа пътя за актуализиране.

След това копирах източника на mongo-c-driver-1.3.5 в c:\mongo-c-driver-1.3.5

След това,

Използвах командния ред на Visual Studio MSBuild, стартиран с Изпълнение като администратор

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

Оказа се, че C компилаторите не са инсталирани със стандартна инсталация на Visual Studio, така че трябваше да инсталирам C++ компонент на Visual Studio. Инсталирах C++ Common Tools, но не и MFC за C++, нито XP Support. Това каза, че ще използва 3 GB дисково пространство (започва от 39,5, завършва на 37,0, така че използва 2,5 GB)

След като това беше инсталирано:

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:\work\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

И сега mongo-c-driver е изграден. Мога да го използвам с Visual C++, за да се свържа с моя MongoDB сървър чрез ssl.

Сега се опитвам да разбера как да накарам Embarcadero RADStudio C++ Builder да използва новия mongo-c-driver. Самото копиране на .dll в папката на приложението води до прекъсване на bson dll. Проследяването на стека изглежда така:



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Извлечете две стойности на подмасив в mongodb чрез $elemMatch

  2. MongoDB - Грешка:невалидна схема, очаква се mongodb

  3. Java&Mongo:вземете обект, където съществува поле

  4. Свързване на Django +1.10 с MongoDB

  5. NodeJS/Mongoose/MongoDB - Изтегляне (от масив) не работи