資源
本教程翻譯自 MongoDB C Driver 的 官方安裝教程。更新日期:2018年9月21日新荤。
接下來的步驟將會(huì)指導(dǎo)你一步步的進(jìn)行下載台汇、編譯和安裝當(dāng)前發(fā)布版本的 MongoDB C Driver(libmongoc) 和 BSON library(libbson)苟呐。
支持的平臺(tái)
MongoDB C Driver 持續(xù)的在 以下不同的平臺(tái) 測(cè)試過:
- 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 發(fā)布版本提供了 libmongoc 和其相關(guān)依賴的包管理工具。使用包管理工具安裝 libmongoc 最大的優(yōu)勢(shì)在于它會(huì)自動(dòng)的安裝相關(guān)依賴(包括 libbson)严衬。
libmongoc 包可以在最新的 Debian 和 Ubuntu 上使用:
apt-get install libmongoc-1.0.0
在 Fedora上笆呆,mongo-c-driver 包使用以下命令可以獲得:
dnf install mongo-c-driver
在最新的紅帽(Red Hat)系統(tǒng)上,如 CentOS 和 RHEL 7俄精,mongo-c-driver 包放到了 EPEL 倉(cāng)庫榕堰。可以在 這里 查看可用版本圾旨。包可以使用以下命令安裝:
yum install mongo-c-driver
使用包管理工具安裝 libbson
libbson 包在最新的 Debian 和 Ubuntu 版本可用砍的,如果你已經(jīng)安裝 libmongoc沫勿,libbson 也會(huì)作為其依賴自動(dòng)安裝味混,當(dāng)然它也可以獨(dú)立的使用下面命令安裝:
apt-get install libbson-1.0
在 Fedora 上翁锡,可以使用下面命令安裝:
dnf install libbson
在最新的紅帽(Red Hat)系統(tǒng)上,如 CentOS 和 RHEL 7瘟判,mongo-c-driver 包放到了 EPEL 倉(cāng)庫±撼牛可以在 這里 查看可用版本匆瓜。包可以使用以下命令安裝:
yum install libbson
在 Unix 上編譯
libmongoc 準(zhǔn)備條件
需要 OpenSSL 進(jìn)行授權(quán)登錄或使用 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 準(zhǔn)備條件
編譯 libbson 僅需要準(zhǔn)備 cmake
,通過調(diào)整上面的命令行可以選擇只安裝 cmake
桐筏。
從發(fā)布版源碼編譯
除非你想?yún)⑴c mongo-c-driver 和 libbson 的開發(fā)梅忌,否則你應(yīng)該總是從發(fā)布版(release)的源碼進(jìn)行編譯除破。
最新的 libmongoc 和 libbson 是 1.13.0,它們都被包含在 mongo-c-driver 中皂岔,可以在 這里下載。這篇文章中的所有命令都是使用了 cmake
的外部構(gòu)建剖毯,外部構(gòu)建最主要的特點(diǎn)是將編譯產(chǎn)生的文件和安裝源碼進(jìn)行分離教馆。
下面這部分命令將會(huì)下載并解壓驅(qū)動(dòng)土铺,并且配置它:
$ 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
參數(shù),詳情參見 initialization and cleanup究恤。另外一個(gè)有用的 cmake
參數(shù)是使用 -DCMAKE_BUILD_TYPE=Release
編譯 release 優(yōu)化版本后德,使用 -DCMAKE_BUILD_TYPE=Debug
編譯調(diào)試的 debug 版本。使用 cmake -L ..
命令可以列出所有配置選項(xiàng)赫蛇。
如果 cmake
命令成功執(zhí)行雾叭,根據(jù)你的配置選項(xiàng)將會(huì)看到很多的輸出。最后一行輸出應(yīng)該看起來像下面這樣:
-- Build files have been written to: /home/user/mongo-c-driver-1.13.0/cmake-build
如果 cmake
輸出和上面有任何不同作煌,說明構(gòu)建的過程很大的可能出現(xiàn)了錯(cuò)誤粟誓,重新查看輸出有什么不同然后改正對(duì)應(yīng)的錯(cuò)誤起意。
mongo-c-driver 包含了 libbson,以防止你的系統(tǒng)中沒有安裝 libbson悲酷。構(gòu)建過程將會(huì)檢測(cè)你的系統(tǒng)是否沒有安裝 libbson设易,并且使用包含的 libbson蛹头。
此外,你也可以通過設(shè)置 -DENABLE_MONGOC=OFF
來選擇只編譯 libbson :
$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF -DENABLE_MONGOC=OFF ..
同樣構(gòu)建后會(huì)輸出上面類似的的信息屠尊,盡管輸出信息更少讼昆。一旦配置完成了骚烧,就可以使用下面命令安裝選擇的選項(xiàng)了:
$ make
$ sudo make install
有兩種方法卸載已安裝的組件,第一種方法是直接調(diào)用卸載程序既峡,在 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
第二種方法是在構(gòu)建目錄中執(zhí)行以下命令涧狮,假設(shè)卸載時(shí)的狀態(tài)和使用安裝時(shí)的狀態(tài)相同:
sudo make uninstall
第二種方法僅僅是調(diào)用了第一種方法中提到的卸載程序么夫。
從 git 上編譯
克隆倉(cāng)庫然后編譯當(dāng)前主分支或特定的發(fā)布分支標(biāo)簽:
$ 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
如果希望文檔和其它組件同時(shí)構(gòu)建腐螟,可以在正常構(gòu)建的時(shí)候添加 -DENABLE_MAN_PAGES=ON
和 -DENABLE_HTML_DOCS=ON
選項(xiàng)。這一點(diǎn)無論是在發(fā)布的源碼還是在 git 克隆的源碼都是適用的衬廷。
在 macOS 上編譯
安裝 XCode 命令行工具:
$ xcode-select --install
同樣需要 cmake
汽绢。首先 根據(jù) Homebrew 的說明 安裝 Homebrew宁昭。然后執(zhí)行:
$ 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
構(gòu)建安裝:
$ mkdir cmake-build
$ cd cmake-build
$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
所有步驟和上面介紹的相同(包括只編譯 libbson积仗,編譯文檔等等)。
在 Windows 上使用 Visual Studio 編譯
在 Windows 上編譯需要 Windows Vista 或更新版本以及 Visual Studio 2010 或更新版本哎迄。此外隆圆,需要 cmake
來產(chǎn)生 Visual Studio 項(xiàng)目文件匾灶。
首先產(chǎn)生 Visual Studio 項(xiàng)目文件。接下來我們假設(shè)使用 Visual Studio 2015 Express 編譯 64 位文件颊糜。Express 版本可用在 Microsoft 官方上免費(fèi)下載秃踩。同樣我們使用 cmake
外部構(gòu)建的方式產(chǎn)生獨(dú)立于源文件的構(gòu)建文件憔杨。
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
參數(shù)后面為Visual Studio 15 2017 Win64
抛蚤。更多的編譯器選項(xiàng)可以使用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" ..
此外譯者這里在第一次編譯的時(shí)候一直卡在
looking for snprintf
這條信息上。使用 everything 搜索發(fā)現(xiàn)這是一個(gè) boost 頭文件樊拓。我這里使用了兩種處理方法塘慕,一是直接 ctrl+c 跳過图呢,查看 CMakeLists.txt 源文件發(fā)現(xiàn)應(yīng)該使用替代的操作,找不到也沒關(guān)系拥娄。另一種方法是我在第二次編譯時(shí)將 boost 添加到環(huán)境變量中瞳筏,這次給出找到 snprintf 信息姚炕。
(運(yùn)行 cmake -LH ..
可以列出其他選項(xiàng))
現(xiàn)在我們已經(jīng)產(chǎn)生了項(xiàng)目文件,我們既可以使用 Visual Studio 也可以使用命令行的方式編譯項(xiàng)目(譯者這里使用 Visual Studio 進(jìn)行構(gòu)建些椒,對(duì)應(yīng)的打開 mongo-c-driver.sln 文件)免糕。下面我們使用 msbuild.exe
命令在命令行中編譯忧侧。
msbuild.exe /p:Configuration=RelWithDebInfo ALL_BUILD.vcxproj
Visual Studio 默認(rèn)編譯的類型為 Debug
,但是我們推薦編譯一個(gè)包含生成使用調(diào)試信息的 release 版本】舷模現(xiàn)在 libmongoc 和 libbson 都已經(jīng)編譯完成,我們?cè)偈褂?msbuild 將它們安裝到之前 CMAKE_INSTALL_PREFIX
指定的位置耐亏。
msbuild.exe INSTALL.vcxproj
你應(yīng)該可以在 C:\mongo-c-driver
目錄下看到 libmongoc 和 libbson 已經(jīng)被安裝了缚柏。
關(guān)于如何在你的項(xiàng)目中使用這些驅(qū)動(dòng)庫币喧,請(qǐng)參考 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
下載并解壓最新源碼朱巨,進(jìn)入目錄,然后使用 CMake 構(gòu)建:
CC=/mingw64/bin/gcc.exe /mingw64/bin/cmake -G "MSYS Makefiles" -DCMAKE_INSTALL_PREFIX="C:/mongo-c-driver" ..
make