之前写过一片MongoDB C++驱动在win64、VS2010的配置文章,算是勉强使用就版本来凑合。在从OpenCV在2.4.4开始有了自己的JNI,就把全部工作转移到JAVA里来完成,懒得去钻研C++ Driver了。最近因为矩阵运算导致速度太慢,想用C++来提高效率并尝试CUDA,在Ubuntu下又再次尝试编译C++的MongoDB驱动,在此记录。
写之前再次吐槽下10gen的Tutorial做的太差劲了。我的主要工作也依靠OpenCV。作为开源免费的视觉库,各种教程十分全面,所需类库清晰明了,还配合一些IDE有上手教程。相比之下Mongo据说融资不少,对编译配置却三言两语,把所有使用者都当成资深程序员了。
在下载编译MongoDB驱动之前,先说下所需的主要类库,这也是官方网站含糊不清,很多朋友可能犯错的地方。ubuntu下安装mongodb很简单,在上一篇已经说了,这里只讲C++驱动。
1. MongoDB是用C++写的,但生成软件并没有用传统的Cmake而是Python的Scons。在Ubuntu下很简单,版本也不那么重要了。
sudo apt-get install scons
2. MongoDB另一个依赖的主要类库就是Boost。作为功能强大、开源、同行审核的库,版本之间很容易混淆。去官方首页下载,推荐使用1.49。解压出来后里面有bootstrap.sh,在ubuntu下运行得到bjam、b2文件。在我之前Win下配置里用的是bjam,今天配置时网上看到最新版的用b2来安装(也有人用bjam安装成功)。这个安装过程比较长,虽然MongoDB只用其中几个功能,所以可以一一查找编译。更简单粗暴的方法就是全部编译出来(运行 ./b2),在/usr/local/lib下找到那写libboost_..文件算是编译成功了。
可以使用 ./b2 --show-libraries
来察看所有库,用 ./b2 install --with-<library name>来指定安装。
使用 ./b2会生成所需的库文件,用 sudo ./b2 install 可以吧文件放在默认的安装目录usr/local/lib下,也可以在配置文件中更改这个目录,使用sudo才有权限把文件放进去。
3. 终于到了MongoDB,去官网下载个单独的“standalone” C++驱动并解压出来,目前最新2.4.8,进入子目录下scons安装。没有安装成功多半是因为找不到Boost类库,应去寻找更多关于它的解决方法。若是编译成功,可以看到文件夹下有libmongoclient.a这个文件。
4. 至此安装步骤基本完成了,拿个编译器把官方的tutorial写个cpp,编译这