如何为 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 安装,带或不带 --前缀),它只是不想在/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 存储库并阅读"下载和编译"wiki 页面。
存储库有三个分支(两个当前提供稳定的发布流)。第一个稳定版本系列被命名为26compat(MongoDB 2.6兼容),其源代码是从MongoDB的2.6版本中提取的(以及使其独立的小修改)。它旨在替代围绕C++驱动程序构建的现有代码。
另一个稳定版本系列被命名为 legacy ,它类似于 26compat 分支,但包含一些向后突破性改进以及许多重要的改进和修复。它是新项目的正确起点。使用旧"服务器驱动程序"或 26compat 驱动程序的现有项目也应旨在升级到稳定的旧版本系列。
如果您有兴趣,可以在此处阅读有关更改的更多信息,但总的来说,您将更好地使用我们现在在 github 存储库中提供的内容。虽然C++驱动程序在技术上可以通过服务器源获得,但它实际上并不打算在MongoDB外部使用。现在,我们在官方存储库中提供的代码旨在供外部使用,并由C++驱动程序团队提供支持。
我们还在主分支上开发一个为 C++11 构建的全新驱动程序,但尚未准备好生产。我们鼓励您进行试验并提供反馈。
编辑:这篇文章获得了很多流量,但描述了如何构建现已正式过时的"遗留C++"驱动程序。旧版C++驱动程序已被新的 C++11 驱动程序淘汰。在编写将与MongoDB通信的客户端应用程序C++时,新的C++11驱动程序应该是首选。有关如何构建新的 C++11 驱动程序的信息,请参阅此处:
https://github.com/mongodb/mongo-cxx-driver/wiki/Quickstart-guide-(New-Driver)
编辑:请注意,此答案已过时。泰勒下面的答案是C++驱动程序的所有现代用户的正确答案。
我建议不要尝试使用 2.5 版本(或 2.4 版本中)中的C++驱动程序压缩包来构建驱动程序库。
构建C++驱动程序的最佳方法是从完整的 mongodb 源代码存档。这有几个原因,但最重要的是压缩包构建只提供了一个非常小的构建系统。正如您所注意到的,它没有"安装"目标。另一个限制是压缩包构建不能生成共享对象,而完整的源代码可以。
以下是有关从主要 mongodb 源构建 C++ 驱动程序的一些基本说明:
- 从 https://github.com/mongodb/mongo 克隆君主源
- 运行
scons --prefix=<path-to-install> --full --use-system-all install-mongoclient
- 如果需要共享库(在最新的 2.4 和最新的 2.5 中受支持),请将
--sharedclient
添加到上面的行中。 - 如果需要库的调试版本,请传递
--dd
(2.4) 或--dbg=on
(主干的 2.5 尖端)。
--use-system-all
标志非常重要:使用它会抑制针对主要 mongodb 源附带的 boost 和 pcre 等版本的供应商进行构建。您不希望库针对这些库进行构建,因为生成的库不适合与针对这些库的系统版本构建的应用程序混合使用。这在使用 --sharedclient
进行构建时尤其重要。
上述方法的一个挑战是,当使用 --use-system-all
构建时,构建系统会检查系统上是否存在各种库。其中一些库(如 v8)可能不可用。在 2.4 上,必须安装库的适用版本,或编辑 SConstruct 以禁止查找库的 CheckLib 调用。在 2.5 上,这不是问题,因为缺少的库只会导致构建失败,前提是您尝试构建依赖于缺少的库的目标。由于构建C++客户端驱动程序仅依赖于少量库(如 boost),因此工作起来要容易得多。
我还建议首先使用测试--prefix
参数进行构建,以确保安装操作符合您的预期。
希望这有帮助。
不幸的是,该库不会自动安装。 它经过编译,以便您可以将库与您的应用程序一起分发。 不建议包含 cpp 或使用压缩包文件。
请参阅此链接中的文档:http://docs.mongodb.org/ecosystem/tutorial/download-and-compile-cpp-driver/#download-and-compile-cpp-driver
最好查理
- Mongodb c++驱动程序:如何查询元素的数组
- Mongocxx无法使用SSL连接到mongoDB
- 获取 OID(类型::b_oid)作为 MongoDB C++驱动程序中的字符串
- MongoDB 使用数组中的 OR 条件构建查询
- 使用 C++ 查询 MongoDB 的日期字符串
- MongoDB C++ 驱动程序 - 8 位和 16 位整数?
- 无法使用C++代码向MongoDB进行身份验证
- 将 MongoDB C++ 驱动程序升级到 mongocxx-3.1.2
- Mongodb C驱动程序在Windows上安装失败
- 修改Mongodb源代码以禁用文档的自动生成"_id"字段
- Mongodb C++编译问题
- Mongodb Cxx 驱动程序测试在发布版本中崩溃 [ 在调试中工作正常]
- 在 mongodb c++ 驱动程序中使用声明"not found"
- 将mongocxx连接到mongodb服务器时出错:SSL支持不可用
- MongoDB C 查询文档的子元素
- 编译MongoDB C 11驱动程序的错误
- C++ MongoDB 客户端作为类成员
- 无法从C++代码连接到MongoDB
- 如何在C++中使用MongoDB GeoSpatial Index
- Mongodb C++ API 插入二进制文件(图像)