簡體   English   中英

如何為Ubuntu安裝MongoDB C ++驅動程序?

[英]How to install MongoDB C++ drivers for Ubuntu?

我已經下載了最新的MongoDB C ++驅動程序, http://downloads.mongodb.org/cxx-driver/mongodb-linux-x86_64-2.5.2.tgz 當我做'scons'時,它構建得很好。 建築物完工后,我得到以下內容:

ranlib build/libmongoclient.a
Install file: "build/libmongoclient.a" as "libmongoclient.a"
scons: done building targets.

它說它安裝了mongo,但我想在適當的位置安裝lib和頭文件,比如/ usr / local。 無論我嘗試什么(scons安裝,有或沒有--prefix),它只是不想在/ usr / local中安裝它。 事實上,它說安裝目標是最新的:

$sudo scons install --prefix=/usr/local
scons: Reading SConscript files ...
Checking for C++ library boost_thread-mt... (cached) yes
Checking for C++ library boost_filesystem-mt... (cached) yes
Checking for C++ library boost_system-mt... (cached) yes
Checking for sasl_version_info(0, 0, 0, 0, 0, 0) in C library sasl2... (cached) yes
Checking for C++ header file execinfo.h... (cached) yes
Checking whether backtrace is declared... (cached) yes
Checking whether backtrace_symbols is declared... (cached) yes
Checking whether backtrace_symbols_fd is declared... (cached) yes
scons: done reading SConscript files.
scons: Building targets ...
scons: `install' is up to date.
scons: done building targets.

我應該使用其他參數來安裝嗎? 對於庫,我可以復制它,但手動安裝標題會更加繁瑣。

目前安裝MongoDB C ++驅動程序的最佳方法是訪問官方github存儲庫並閱讀“下載和編譯”維基頁面

存儲庫有三個分支(兩個目前提供穩定的發布流)。 第一個穩定版本系列命名為26compat (MongoDB 2.6兼容),其源代碼摘自MongoDB的2.6版本(以及使其獨立的微小修改)。 它旨在替代圍繞C ++驅動程序構建的現有代碼。

另一個穩定版本系列名為legacy ,它類似於26compat分支,但包含一些落后的改進和許多重要的改進和修復。 這是新項目正確起點 使用舊的“服務器驅動程序”或26compat驅動程序的現有項目也應該旨在升級到穩定的舊版本系列。

如果您有興趣,可以在這里閱讀有關更改的更多信息,但一般情況下,您現在可以更好地使用我們在github存儲庫中提供的內容。 雖然C ++驅動程序在通過服務器源之前在技術上可用,但它實際上並不打算在MongoDB外部使用。 現在,我們在官方庫提供代碼目的由C ++的駕駛員隊伍,以在外部使用和支持。

我們還在為master分支上的C ++ 11構建一個全新的驅動程序 ,但尚未准備好生產。 我們鼓勵您嘗試並提供反饋。

編輯 :這個帖子獲得了大量的流量,但描述了如何構建現在正式過時的“Legacy C ++”驅動程序。 Legacy C ++驅動程序已被新的C ++ 11驅動程序淘汰。 在用C ++編寫將與MongoDB通信的客戶端應用程序時,新的C ++ 11驅動程序應該是首選。 有關如何構建新C ++ 11驅動程序的信息,請訪問:

https://github.com/mongodb/mongo-cxx-driver/wiki/Quickstart-Guide-(New-Driver)

編輯 :請注意,這個答案已經過時了。 Tyler的答案是C ++驅動程序的所有現代用戶的正確答案。

我建議不要嘗試使用2.5版本中的C ++驅動程序tarball(或者,就此而言,在2.4版本中)來構建驅動程序庫。

構建C ++驅動程序的最佳方法是使用完整的mongodb源存檔。 這有幾個原因,但最重要的是tarball構建只提供了一個非常小的構建系統。 正如您所注意到的,它沒有“安裝”目標。 另一個限制是tarball構建不能生成共享對象,而完整源可以。

以下是從主要mongodb源構建C ++驅動程序的一些基本說明:

  • https://github.com/mongodb/mongo克隆mongodb源代碼
  • 運行scons --prefix=<path-to-install> --full --use-system-all install-mongoclient
  • 如果您需要共享庫(最新2.4和最新2.5支持),請在上面的行中添加--sharedclient
  • 如果需要庫的調試版本,請傳遞--dd (2.4)或--dbg=on (2.5 tip of trunk)。

--use-system-all標志非常重要:使用它會禁止構建與主要mongodb源附帶的boost和pcre等版本相關的內容。 您不希望您的庫針對這些庫進行構建,因為生成的庫不適合與針對這些庫的系統版本構建的應用程序混合使用。 使用--sharedclient構建時,這一點尤其重要。

上面的一個挑戰是,當使用--use-system-all構建時,構建系統會檢查系統上是否存在各種庫。 其中一些庫(如v8)可能無法使用。 在2.4,您必須安裝適用版本的庫,或編輯SConstruct以禁止查找庫的CheckLib調用。 在2.5上,這不是問題,因為如果您嘗試構建依賴於缺少的庫的目標,則缺少的庫只會導致構建失敗。 由於構建C ++客戶端驅動程序僅依賴於少量庫(如boost),因此更容易實現。

我還建議首先使用test --prefix參數構建,以確保安裝操作符合您的意圖。

希望這可以幫助。

不幸的是,庫不會自動安裝。 它已編譯,因此您可以使用您的應用程序分發庫。 不建議包括cpp或使用tarball文件。

請參閱此鏈接中的文檔: http//docs.mongodb.org/ecosystem/tutorial/download-and-compile-cpp-driver/#download-and-compile-cpp-driver

最好,查理

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM