Ubuntu24 安装 mongocxx 驱动教程
本文是安装 MongoDB C++ 驱动程序(mongocxx)的详细教程,系统使用的是 Ubuntu24。
如果想安装 mongodb 数据库,在这里我并不推荐官方教程,推荐文章:如何在 Ubuntu 24.04 上安装 MongoDB 并确保其安全
安装依赖项
- 更新包管理器和安装必要的依赖项:
sudo apt update sudo apt install -y cmake libssl-dev libsasl2-dev
- 现在的
mongocxx
驱动在构建时会自动检查是否存在mongo-c-driver
,如果不存在就会默认下载一个对应版本的mongo-c-driver
并进行配置(包括 libbson),因此不需要再手动安装mongo-c-driver
了。那么如果说你想使用指定版本的mongo-c-driver
去构建mongocxx
驱动,请看这篇教程。
安装 mongocxx 驱动
cmake 版本要求至少 3.15
C++ 编译器 GCC 必须支持 C++17
首先创建一个目录存放
mongo-cxx-driver
源码,这里我选择直接使用当前用户的 home 目录。cd ~/.
下载
mong-cxx
驱动源码压缩包,这里选择的版本是 3.11.0。wget https://github.com/mongodb/mongo-cxx-driver/releases/download/r3.11.0/mongo-cxx-driver-r3.11.0.tar.gz
解压缩并进入到构建目录中(建议开始如下操作前,把 build 目录备份一份)。
tar -xzf mongo-cxx-driver-r3.11.0.tar.gz # 建议备份 cp -r mongo-cxx-driver-r3.11.0/build mongo-cxx-driver-r3.11.0/build.bak cd mongo-cxx-driver-r3.11.0/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
如果在配置项目时,并没有如下提示(或报错显示找不到 libmongoc/libbson),说明你此时的 mongocxx 驱动还不支持默认下载对应的
mongo-c-driver
,所以本篇教程请不要再继续往下看,请看这篇教程。
编译构建
sudo 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::stream int 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.11.0
和libbsoncxx.so.3.11.0
存放位置:cd /usr/local/lib sudo rm libmongocxx.so._noabi sudo rm libbsoncxx.so._noabi sudo ln -s /usr/local/lib/libmongocxx.so.3.11.0 /usr/local/lib/libmongocxx.so._noabi sudo ln -s /usr/local/lib/libbsoncxx.so.3.11.0 /usr/local/lib/libbsoncxx.so._noabi # 下方命令可能会弹出一些提示信息,不用管。 sudo ldconfig cd ~/.
此时运行
ldd test
显示如下:
./test
运行结果如下:
至此,关于安装 mongocxx 驱动的教程结束。