Ubuntu 构建安装 mongocxx 驱动(使用指定版本 mongoc 驱动)
- 安装依赖项
- 安装 mongo-cxx-driver
- 测试安装
本文是安装 MongoDB C++ 驱动程序(mongocxx)的详细教程,系统使用的是 Ubuntu24。
如果想安装 mongodb 数据库,在这里我并不推荐官方教程,推荐文章:如何在 Ubuntu 24.04 上安装 MongoDB 并确保其安全
安装依赖项
- 更新包管理器和安装必要的依赖项:
sudo apt update sudo apt install -y cmake libssl-dev libsasl2-dev
- 安装 MongoDB C 驱动(
libmongoc
和libbson
,是安装mongocxx
所需要的依赖),如果你有mongo-c-driver
,请跳过这一步:
此命令会克隆 1.26.2 版本的 mongoc 驱动仓库(如果想安装其他版本,把git clone https://github.com/mongodb/mongo-c-driver.git --branch="1.26.2" "mongo-c-driver"
1.26.2
替换为对应的版本即可),并保存至当前目录下的mongo-c-driver
目录。下载完成后执行如下命令进行项目构建(建议构建前把 build 目录备份一份):# 建议备份 cp -r mongo-c-driver/build mongoc-c-driver/build.bak # 进入到构建目录 cd mongo-c-driver/build # 配置 libbson。-S 指定源目录;-B 指定构建目录。一定要指定 `ENABLE_MONGOC=ON`,否则没有 libmongoc 动态库文件生成。 cmake -S .. -B . \ -D ENABLE_EXTRA_ALIGNMENT=OFF \ -D ENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF \ -D CMAKE_BUILD_TYPE=RelWithDebInfo \ -D BUILD_VERSION="1.26.2" \ -D ENABLE_MONGOC=ON # 配置项目,生成构建文件 cmake .. # 并行构建 cmake --build . --config RelWithDebInfo --parallel # 安装构建结果,将会安装到默认目录 /usr/local 下 $ sudo cmake --build . --target install --config RelWithDebInfo
- 如需卸载 mongoc,请在 build 目录下使用如下命令:
sudo cmake --build . --target uninstall --config RelWithDebInfo
安装 mongo-cxx-driver
cmake 版本要求至少 3.15
C++ 编译器 GCC 必须支持 C++17
- 首先创建一个目录存放
mongo-cxx-driver
源码,这里我选择直接使用当前用户的 home 目录。cd ~/.
- 下载
mongo-cxx
驱动源码压缩包,这里选择的版本是 3.10.2(因为 3.11.0 以上的 mongocxx 要求 c-driver 版本最低为 1.28.0,但上方下载的是 1.26.2,具体参考:github)。wget https://github.com/mongodb/mongo-cxx-driver/releases/download/r3.10.2/mongo-cxx-driver-r3.10.2.tar.gz
- 解压缩并进入到源码目录中(建议开始如下操作前,把 build 目录备份一份)
tar -xzf mongo-cxx-driver-r3.10.2.tar.gz # 建议备份 cp -r mongo-cxx-driver-r3.10.2/build mongo-cxx-driver-r3.10.2/build.bak cd mongo-cxx-driver-r3.10.2/build
- 配置并安装
# 配置,默认 mongocxx 会安装在当前目录下的 install 目录中。配置-DMONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX=OFF,使安装目录改为 /usr/local cmake .. \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_CXX_STANDARD=17 \ -DMONGOCXX_OVERRIDE_DEFAULT_INSTALL_PREFIX=OFF # 编译构建 cmake --build . # 安装,会安装在 /usr/local 目录下 sudo cmake --build . --target install
- 如需卸载 mongocxx,请使用如下两种方式之一:
# 调用卸载目标 sudo cmake --build . --target uninstall # 运行卸载脚本 sudo <install-dir>/share/mongo-cxx-driver/uninstall.sh
测试安装
下方将给出测试用例,请注意替换您数据库的用户名和密码。
-
在
~/.
目录下创建示例 test.cpp#include <mongocxx/client.hpp> #include <mongocxx/instance.hpp> #include <mongocxx/uri.hpp> #include <mongocxx/exception/exception.hpp> #include <iostream> #include <bsoncxx/json.hpp> // 用于 bsoncxx::to_json #include <bsoncxx/builder/stream/document.hpp> // 用于 bsoncxx::builder::streamint main() {// 初始化 MongoDB 客户端mongocxx::instance instance{}; // 必须在程序生命周期中存在try {// 设置连接 URI,包括数据库、用户名和密码mongocxx::uri uri("mongodb://用户名:密码@localhost:27017/admin");// 创建客户端并连接到数据库mongocxx::client client(uri);// 获取 admin 数据库auto db = client["admin"];// 检查是否能够成功执行命令auto result = db.run_command(bsoncxx::builder::stream::document{}<< "ping" << 1<< bsoncxx::builder::stream::finalize);std::cout << "MongoDB connected successfully: "<< bsoncxx::to_json(result)<< std::endl;} catch (const mongocxx::exception& e) {std::cerr << "MongoDB connection failed: " << e.what() << std::endl;return EXIT_FAILURE;}return EXIT_SUCCESS; }
-
编译指令
g++ -std=c++17 test.cpp -o test -lmongocxx -lbsoncxx -I/usr/local/include/mongocxx/v_noabi -I/usr/local/include/bsoncxx/v_noabi -L/usr/local/lib -pthread
-
编译完成后,如果运行未出现如下问题,说明安装成功!恭喜您。
如果出现这个问题,并且
ldd test
显示未找到动态链接库:
则需要手动指定动态库位置,具体操作如下,请注意你自己的libmongocxx.so.3.10.2
和libbsoncxx.so.3.10.2
存放位置:cd /usr/local/libsudo rm libmongocxx.so._noabisudo rm libbsoncxx.so._noabisudo ln -s /usr/local/lib/libmongocxx.so.3.10.2 /usr/local/lib/libmongocxx.so._noabisudo ln -s /usr/local/lib/libbsoncxx.so.3.10.2 /usr/local/lib/libbsoncxx.so._noabi # 下方命令可能会弹出一些提示信息,不用管。 sudo ldconfigcd ~/.
此时运行
ldd test
显示如下:
./test
运行结果如下:
至此,关于安装 mongocxx 驱动的教程结束。