官方documentation似乎缺乏安装和使用c ++驱动程序的分步说明。这个thread和答案似乎更有希望。但我仍然不确定我做错了什么,因为我$ locate client/dbclient.h
中Ubuntu
不能,好像没有安装mongo驱动程序。所以,这就是我所做的:
scons
,如此$ sudo apt-get install scons
$ scons
然后$ scons install
/etc/ld.so.conf
个文件并添加了/usr/local/lib
完成所有这些步骤后,我仍无法在我的系统中找到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。
答案 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
答案 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并注意到我可能会有这样的情况。]