如何在Ubuntu中安装和使用mongodb c ++驱动程序?

时间:2015-07-24 11:29:16

标签: c++ mongodb ubuntu

官方documentation似乎缺乏安装和使用c ++驱动程序的分步说明。这个thread和答案似乎更有希望。但我仍然不确定我做错了什么,因为我$ locate client/dbclient.hUbuntu不能,好像没有安装mongo驱动程序。所以,这就是我所做的:

  1. 在此link -ok
  2. 下载驱动程序
  3. 解压缩档案 - 确定
  4. 安装scons,如此$ sudo apt-get install scons
  5. $ scons然后
  6. sudo $ scons install
  7. 打开/etc/ld.so.conf个文件并添加了/usr/local/lib
  8. 完成所有这些步骤后,我仍无法在我的系统中找到client/dbclient.h。好像我错过了什么。此外,当我进入安装库的阶段时,我想阅读库的核心,因为在Web上的小型教程中我无法找到我想要的所有内容(我想因为缺乏完整的教程)类似于Python)。那么,您也可以建议我应该查看哪些库文件来学习我将使用的函数api?

    修改

    此官方link似乎已过时,因为$ scons --full install会导致错误消息No such option: --full。缺乏教程,过时的文档和相当陡峭的学习曲线,恕我直言,使得使用c ++相当有问题。

    修改

    好吧,似乎这个doc不仅仅是过时的,而是不正确的,因为它应该是:

    scons --prefix=/usr/include install.
    

    但是,即使我指定--prefix=/usr/include,我也无法在安装过程中找到此文件夹中的任何mongo文件。我面对与thread中的一个人完全相同的问题。我猜,我的最后一个问题应该是"世界上有没有人在C ++中使用mongodb?"

    修改

    如果我尝试

    $ sudo git clone git@github.com:mongodb/mongo-cxx-driver.git
    

    然后我得到Could not read from remote repository等。看起来他们已经做了一切,以防止在c ++中使用mongdb。

2 个答案:

答案 0 :(得分:2)

编辑:此帖子获得了大量流量,但介绍了如何构建现已正式过时的“Legacy C ++”驱动程序。 Legacy C ++驱动程序已被新的C ++ 11驱动程序淘汰。在用C ++编写将与MongoDB通信的客户端应用程序时,新的C ++ 11驱动程序应该是首选。有关如何构建新C ++ 11驱动程序的信息,请访问:

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

可以在GitHub Wiki页面上找到构建驱动程序的现代指令,以获取C ++驱动程序。请参阅以下内容:

https://github.com/mongodb/mongo-cxx-driver/wiki/Download-and-Compile-the-Legacy-Driver

https://github.com/mongodb/mongo-cxx-driver/wiki/Tutorial

答案 1 :(得分:1)

一年的说明:上面的许多链接现已过时,并指向这些github pages。该页面比上面的响应者看起来更通用。然后有一个指向this tutorial的向前指针,这很好但是做了一些假设,你的开发环境或多或少像mongo开发者那样。

即使在ubuntu 16.04上,也不像人们想象的那样顺风顺水。现在用前缀“Here be dragons”阅读全部内容。

一些值得注意的问题:

  • 教程指向要通过curl获取的特定文件,而不是指向github存储库并建议执行克隆。这是一个有点过时的秘诀。如果我告诉我的基础设施获取版本3.0.1,它将很乐意永远这样做,而不是更新。也就是说,似乎从git编译很好。

  • 先决条件是安装libmongoc。看起来好像从标准的ubuntu软件包安装就足够了,因为这就是引用的页面所说的内容。但是mongocxx安装程序想要> = 1.3.4。因此需要从git安装。

  • 这取决于libbson> = 1.3.4,这比安装的ubuntu 16.04晚。因此,需要从git安装它。

  • 请注意,没有任何git包指定要获取生产版本的请求分支或标记。查看master上的所有标签并选择数字最大但标签中没有“rc”似乎可行。一个名为“发布”或“当前”的标签将是非常好的。

  • 构建(键入make)尝试对子包EP_mnmlstc_core进行make install安装,但这会失败。所以整个构建显然必须以root身份运行。

  • 起初pkg-config在mongocxx上不起作用。然后它做到了。我假设我做了一些微妙的错字,我看不到回头看,但我仍然没有看到它。或者,发生了一些事情,因为它使它发挥作用。

我的编译行是这样的:

g++ --std=c++11 c++-hello-world-v3.cc -o hw   \
    $(pkg-config --cflags --libs libmongocxx) \
    -Xlinker -rpath /usr/local/lib

我真的想在mongo的github repo上提交所有这些文档问题。不幸的是,他们已经禁用了问题跟踪器,而是指向他们的jira实例,在那里我似乎没有权利创建问题。 (有时候我会想念我鼻子前面的东西。)[更新:David Golden亲切地entered the bug info并注意到我可能会有这样的情况。]