起源
最近一个项目需要用到mongodb来做大数据量的存储,以前用到mongo项目都是其他语言,类似golang,pyhton3等,这次需要使用C++在底层构建mongo支持模块,所以先要研究如果构建和使用mongodb-cxx-driver,顺便依然要吐槽某度,搜索全是没用的东西,随后还是只能上梯子然后自己看英文文档才找到出路,这里理顺之后,记录下步骤,其实非常简单,希望后来的小伙伴能够节约一些时间,我自己就折腾了接近1天时间
资料
mongo官网: http://mongocxx.org/mongocxx-v3/installation/linux/
我是在centos8操作系统下进行的编译,其他操作系统看官方文档,大同小异,本篇记录只针对于我当前使用的版本
mongocxx-3.6.3
编译步骤
步骤全部参照官网这里只是翻译为中文而已
-
C++驱动版本编译依赖C版本,我们参照官网给出的步骤来安装C版本驱动 http://mongoc.org/libmongoc/current/installing.html (我安装时候显示的是1.17.5,在你看到这个文章的时候也许就不是了,请以最新版本为主),下面步骤,命令行内容(请用root身份运行),都是安装一些库,有些库可能你机器上已经安装了,再运行一遍,不会有任何影响
dnf install mongo-c-driver
dnf install libbson
yum install cmake openssl-devel cyrus-sasl-devel
- 配置生成,下面的命令,单行输入,如果你使用的版本有所变动,请以官网为准
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.17.5/mongo-c-driver-1.17.5.tar.gz
tar xzf mongo-c-driver-1.17.5.tar.gz
cd mongo-c-driver-1.17.5
mkdir cmake-build
cd cmake-build
cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..
- 生成
cmake --build .
cmake --build . --target install
编译安装完成,会输出安装目录,一般是位于/usr/local/include,和/usr/local/lib64目录下
-
编译C++版本驱动
curl -OL https://github.com/mongodb/mongo-cxx-driver/releases/download/r3.6.3/mongo-cxx-driver-r3.6.3.tar.gz
tar -xzf mongo-cxx-driver-r3.6.3.tar.gz
cd mongo-cxx-driver-r3.6.3/build
- 配置
- 动态库编译
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
- 静态库编译
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS_WITH_STATIC_MONGOC=ON -DBUILD_SHARED_AND_STATIC_LIBS=ON
- 编译MNMLSTC
cmake --build . --target EP_mnmlstc_core
MNMLSTC核心是一个小而易于使用的C++11库,添加了C++14和后面可