资源
本教程翻译自 MongoDB C Driver 的 官方安装教程。更新日期:2018年9月21日。
接下来的步骤将会指导你一步步的进行下载、编译和安装当前发布版本的 MongoDB C Driver(libmongoc) 和 BSON library(libbson)。
支持的平台
MongoDB C Driver 持续的在 以下不同的平台 测试过:
- Archlinux
- Debian 8.1
- macOS 10.10
- Microsoft Windows Server 2008
- RHEL 7.0, 7.1, 7.2
- SUSE 12
- Ubuntu 12.04, 14.04, 16.04
- Clang 3.4, 3.5, 3.7, 3.8
- GCC 4.6, 4.8, 4.9, 5.3
- MinGW-W64
- Visual Studio 2010, 2013, 2015
- x86, x86_64, ARM (aarch64), Power8 (ppc64le), zSeries (s390x)
使用包管理工具安装 libmongoc
一些 Linux 发布版本提供了 libmongoc 和其相关依赖的包管理工具。使用包管理工具安装 libmongoc 最大的优势在于它会自动的安装相关依赖(包括 libbson)。
libmongoc 包可以在最新的 Debian 和 Ubuntu 上使用:
apt-get install libmongoc-1.0.0
在 Fedora上,mongo-c-driver 包使用以下命令可以获得:
dnf install mongo-c-driver
在最新的红帽(Red Hat)系统上,如 CentOS 和 RHEL 7,mongo-c-driver 包放到了 EPEL 仓库。可以在 这里 查看可用版本。包可以使用以下命令安装:
yum install mongo-c-driver
使用包管理工具安装 libbson
libbson 包在最新的 Debian 和 Ubuntu 版本可用,如果你已经安装 libmongoc,libbson 也会作为其依赖自动安装,当然它也可以独立的使用下面命令安装:
apt-get install libbson-1.0
在 Fedora 上,可以使用下面命令安装:
dnf install libbson
在最新的红帽(Red Hat)系统上,如 CentOS 和 RHEL 7,mongo-c-driver 包放到了 EPEL 仓库。可以在 这里 查看可用版本。包可以使用以下命令安装:
yum install libbson
在 Unix 上编译
libmongoc 准备条件
需要 OpenSSL 进行授权登录或使用 SSL 连接 MongoDB。Kerberos 或 LDAP 支持需要 Cyrus SASL。
在 RedHat/Fedora 上安装所有的可选依赖使用以下命令:
$ sudo yum install cmake openssl-devel cyrus-sasl-devel
在 Debian/Ubuntu 上:
$ sudo apt-get install cmak libssl-dev libsasl2-dev
在 FreeBSD上:
$ su -c 'pkg install cmake openssl cyrus-sasl'
libbson 准备条件
编译 libbson 仅需要准备 cmake
,通过调整上面的命令行可以选择只安装 cmake
。
从发布版源码编译
除非你想参与 mongo-c-driver 和 libbson 的开发,否则你应该总是从发布版(release)的源码进行编译。
最新的 libmongoc 和 libbson 是 1.13.0,它们都被包含在 mongo-c-driver 中,可以在 这里下载。这篇文章中的所有命令都是使用了 cmake
的外部构建,外部构建最主要的特点是将编译产生的文件和安装源码进行分离。
下面这部分命令将会下载并解压驱动,并且配置它:
$ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.13.0/mongo-c-driver-1.13.0.tar.gz
$ tar xzf mongo-c-driver-1.13.0.tar.gz
$ cd mongo-c-driver-1.13.0
$ mkdir cmake-build
$ cd cmake-build
$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
推荐使用 -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF
参数,详情参见 initialization and cleanup。另外一个有用的 cmake
参数是使用 -DCMAKE_BUILD_TYPE=Release
编译 release 优化版本,使用 -DCMAKE_BUILD_TYPE=Debug
编译调试的 debug 版本。使用 cmake -L ..
命令可以列出所有配置选项。
如果 cmake
命令成功执行,根据你的配置选项将会看到很多的输出。最后一行输出应该看起来像下面这样:
-- Build files have been written to: /home/user/mongo-c-driver-1.13.0/cmake-build
如果 cmake
输出和上面有任何不同,说明构建的过程很大的可能出现了错误,重新查看输出有什么不同然后改正对应的错误。
mongo-c-driver 包含了 libbson,以防止你的系统中没有安装 libbson。构建过程将会检测你的系统是否没有安装 libbson,并且使用包含的 libbson。
此外,你也可以通过设置 -DENABLE_MONGOC=OFF
来选择只编译 libbson :
$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_MONGOC=OFF ..
同样构建后会输出上面类似的的信息,尽管输出信息更少。一旦配置完成了,就可以使用下面命令安装选择的选项了:
$ make
$ sudo make install
有两种方法卸载已安装的组件,第一种方法是直接调用卸载程序,在 Linux/Unix 下命令如下:
$ sudo /usr/local/share/mongo-c-driver/uninstall.sh
在 Windows 下:
C:\Users\user> C:\mongo-c-driver\share\mongo-c-driver\uninstall.bat
第二种方法是在构建目录中执行以下命令,假设卸载时的状态和使用安装时的状态相同:
sudo make uninstall
第二种方法仅仅是调用了第一种方法中提到的卸载程序。
从 git 上编译
克隆仓库然后编译当前主分支或特定的发布分支标签:
$ git clone https://github.com/mongodb/mongo-c-driver.git
$ cd mongo-c-driver
$ git checkout x.y.z # To build a particular release
$ mkdir cmake-build
$ cd cmake-build
$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
$ make
$ sudo make install
生成文档
安装 Sphinx,然后:
$ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON ..
$ make mongoc-doc
如果只想编译 libbson 文档:
$ cmake -DENABLE_MAN_PAGES=ON -DENABLE_HTML_DOCS=ON ..
$ make bson-doc
如果希望文档和其它组件同时构建,可以在正常构建的时候添加 -DENABLE_MAN_PAGES=ON
和 -DENABLE_HTML_DOCS=ON
选项。这一点无论是在发布的源码还是在 git 克隆的源码都是适用的。
在 macOS 上编译
安装 XCode 命令行工具:
$ xcode-select --install
同样需要 cmake
。首先 根据 Homebrew 的说明 安装 Homebrew。然后执行:
$ brew install cmake
下载最新的源码:
$ curl -LO https://github.com/mongodb/mongo-c-driver/releases/download/1.13.0/mongo-c-driver-1.13.0.tar.gz
$ tar xzf mongo-c-driver-1.13.0.tar.gz
$ cd mongo-c-driver-1.13.0
构建安装:
$ mkdir cmake-build
$ cd cmake-build
$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
所有步骤和上面介绍的相同(包括只编译 libbson,编译文档等等)。
在 Windows 上使用 Visual Studio 编译
在 Windows 上编译需要 Windows Vista 或更新版本以及 Visual Studio 2010 或更新版本。此外,需要 cmake
来产生 Visual Studio 项目文件。
首先产生 Visual Studio 项目文件。接下来我们假设使用 Visual Studio 2015 Express 编译 64 位文件。Express 版本可用在 Microsoft 官方上免费下载。同样我们使用 cmake
外部构建的方式产生独立于源文件的构建文件。
cd mongo-c-driver-1.13.0
mkdir cmake-build
cd cmake-build
cmake -G "Visual Studio 14 2015 Win64" \
"-DCMAKE_INSTALL_PREFIX=C:\mongo-c-driver" \
"-DCMAKE_PREFIX_PATH=C:\mongo-c-driver" \
..
注:译者这里使用的是 Visual Studio 2017,因此这里最后
cmake
的-G
参数后面为Visual Studio 15 2017 Win64
。更多的编译器选项可以使用cmake -G
查看。译者使用的完整命令为:
cmake -G "Visual Studio 15 2017 Win64" "-DCMAKE_INSTALL_PREFIX=d:\software4\mongo_c_driver\install" "-DCMAKE_PREFIX_PATH=d:\software4\mongo_c_driver\install" ..
此外译者这里在第一次编译的时候一直卡在
looking for snprintf
这条信息上。使用 everything 搜索发现这是一个 boost 头文件。我这里使用了两种处理方法,一是直接 ctrl+c 跳过,查看 CMakeLists.txt 源文件发现应该使用替代的操作,找不到也没关系。另一种方法是我在第二次编译时将 boost 添加到环境变量中,这次给出找到 snprintf 信息。
(运行 cmake -LH ..
可以列出其他选项)
现在我们已经产生了项目文件,我们既可以使用 Visual Studio 也可以使用命令行的方式编译项目(译者这里使用 Visual Studio 进行构建,对应的打开 mongo-c-driver.sln 文件)。下面我们使用 msbuild.exe
命令在命令行中编译。
msbuild.exe /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj
Visual Studio 默认编译的类型为 Debug
,但是我们推荐编译一个包含生成使用调试信息的 release 版本。现在 libmongoc 和 libbson 都已经编译完成,我们再使用 msbuild 将它们安装到之前 CMAKE_INSTALL_PREFIX
指定的位置。
msbuild.exe INSTALL.vcxproj
你应该可以在 C:\mongo-c-driver
目录下看到 libmongoc 和 libbson 已经被安装了。
关于如何在你的项目中使用这些驱动库,请参考 Using libmongoc in a Microsoft Visual Studio project
在Windows 上使用 MinGW-64 和 MSYS2 编译
从 msys2.github.io 安装 MSYS2.选择 x86_64 version而不是 i686.
打开 c:\msys64\ming64_shell.bat
(不是 msys2_shell)。安装依赖:
pacman --noconfirm -Syu
pacman --noconfirm -S mingw-w64-x86_64-gcc mingw-w64-x86_64-cmake
pacman --noconfirm -S mingw-w64-x86_64-extra-cmake-modules make tar
pacman --noconfirm -S mingw64/mingw-w64-x86_64-cyrus-sasl
下载并解压最新源码,进入目录,然后使用 CMake 构建:
CC=/mingw64/bin/gcc.exe /mingw64/bin/cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="C:/mongo-c-driver" ..
make
网友评论