mongodb c 驅(qū)動(dòng)

資源

本教程翻譯自 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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市钻蹬,隨后出現(xiàn)的幾起案子凭需,更是在濱河造成了極大的恐慌粒蜈,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件注整,死亡現(xiàn)場(chǎng)離奇詭異度硝,居然都是意外死亡塘淑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門曙蒸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岗钩,“玉大人,你說我怎么就攤上這事兼吓∈硬” “怎么了?”我有些...
    開封第一講書人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵佑力,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我筋遭,道長(zhǎng)打颤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任漓滔,我火速辦了婚禮编饺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘响驴。我一直安慰自己透且,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開白布踏施。 她就那樣靜靜地躺著石蔗,像睡著了一般畅形。 火紅的嫁衣襯著肌膚如雪养距。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,155評(píng)論 1 299
  • 那天日熬,我揣著相機(jī)與錄音棍厌,去河邊找鬼。 笑死竖席,一個(gè)胖子當(dāng)著我的面吹牛耘纱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播毕荐,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼束析,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了憎亚?” 一聲冷哼從身側(cè)響起员寇,我...
    開封第一講書人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤弄慰,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蝶锋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體陆爽,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年扳缕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了慌闭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡躯舔,死狀恐怖驴剔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情庸毫,我是刑警寧澤仔拟,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布衫樊,位于F島的核電站飒赃,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏科侈。R本人自食惡果不足惜载佳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望臀栈。 院中可真熱鬧蔫慧,春花似錦、人聲如沸权薯。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盟蚣。三九已至黍析,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間屎开,已是汗流浹背阐枣。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留奄抽,地道東北人蔼两。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像逞度,于是被迫代替她去往敵國(guó)和親额划。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,928評(píng)論 2 89
  • 我們非常榮幸地宣布 Visual Studio 2017 現(xiàn)已推出档泽! 此次發(fā)布提供新的輕量模塊式安裝體驗(yàn)俊戳,可根據(jù)自...
    三夢(mèng)哥閱讀 7,716評(píng)論 0 6
  • CMake學(xué)習(xí) 本篇分享一下有關(guān)CMake的一些學(xué)習(xí)心得以及相關(guān)使用彬祖。 本文目錄如下: [1、CMake介紹] [...
    AlphaGL閱讀 12,244評(píng)論 11 79
  • 1.1 如何驗(yàn)證某個(gè)元素是否為空 1.2 檢查特定的HTML元素是否存在
    天黑北風(fēng)吹閱讀 186評(píng)論 0 0
  • 陰沉沉的夜晚品抽,灰朦朦的天储笑,一種欲沖破濃云走出迷霧的景象。 遠(yuǎn)望遙想圆恤。一片白茫茫突倍,寒風(fēng)刺骨,雪花飄飄盆昙,山巒皚皚羽历,大地...
    昇夫閱讀 469評(píng)論 2 5