Windows下安装mongodb的C语言程序驱动必须借助交叉编译软件CMake,但是官网上的文档对于一些细节交代的非常不清楚,昨天弄了半天,总算成功安装了,步骤如下:
1、下载mongodb 将mongo-c-driver-1.1.4.zip源代码解压到d:根目录下(此目录路径可根据需要选定)。
2、下载libbson库,https://github.com/mongodb/libbson/releases/download/1.1.6/libbson-1.1.6.tar.gz,将其解压。将解压后的libbson-1.1.6文件夹改名为“libbson”,替换D:\mongo-c-driver-1.1.4\src\libbson目录(mongo-c-driver自带的原目录为空目录)。
3、当需要ssl功能时,下载windows下的OpenSSL相应版本(
http://slproweb.com/products/Win32OpenSSL.html ),如OpenSSL 1.0.1m,安装在C:\OpenSSL-Win64路径下。增加windows系统的环境变量“OPENSSL_ROOT_DIR”,值为“C:\OpenSSL-Win64”。
4、安装CMake软件( http://www.cmake.org ),安装版本3.2.2。官网文档推荐使用Visual 2010,试着用2013编译。
5、用windows命令行的方式安装,因此先在环境变量PATH中增加编译器“msbuild.exe”的路径:“C:\Program Files (x86)\MSBuild\12.0\Bin”。因为mongo-c-driver库的安装需要bson库的支持,所以按先编译bson库,再编译mongo-c-driver的顺序进行。依次做如下操作:
1)进入bson库目录,该目录下有编译libbson的脚本文件CMakeLists.txt:
cd d:\mongo-c-driver-1.1.4\src\libbson
2)用CMake生成Visual Studio 2013的编译环境,指定D:\mongo-c-driver目录为bson库最后的输出安装目录。
cmake -G "Visual Studio 12 Win64" "-DCMAKE_INSTALL_PREFIX=D:\mongo-c-driver"
此时在d:\mongo-c-driver-1.1.4\src\libbson目录下将生成libbson.sln、ALL_BUILD.vcxproj、INSTALL.vcxproj等等编译文件。
3)注意,直接编译 ALL_BUILD.vcxproj 会出错,原因是其中的一个工程test-libbson.vcxproj由于字符集的原因无法编译成功。用vs2013打开libbson.sln,在全部工程中删去test-libbson工程,ALL_BUILD.vcxproj文件会相应的删去该项,保存并退出。
4)编译bson库:
msbuild.exe ALL_BUILD.vcxproj
5)安装bson库:
msbuild.exe INSTALL.vcxproj
此时D:\mongo-c-driver目录下已生成bson相应的bin、lib、include库文件。bson库编译工作完成。
6)用同样的方法继续安装mongo-c-driver,同样也安装在D:\mongo-c-driver下:
cd d:\mongo-c-driver-1.1.4
cmake -G "Visual Studio 12 Win64" "-DCMAKE_INSTALL_PREFIX=d:\mongo-c-driver" "-DBSON_ROOT_DIR=d:\mongo-c-driver"
(上面这句表示编译mongo-c-driver的输出位置和需要的环境变量“BSON_ROOT_DIR”值都为“d:\mongo-c-driver”)
msbuild.exe ALL_BUILD.vcxproj
msbuild.exe INSTALL.vcxproj
7)检查d:\mongo-c-driver目录,lib文件夹中包含了bson-1.0.lib和mongoc-1.0.lib文件,bin文件夹下是相应的动态库,include下是头文件。
整个编译工作完成。