繁体   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