Ubuntu24 安装 mongocxx 驱动教程

发布于:2024-12-07 ⋅ 阅读:(135) ⋅ 点赞:(0)

Ubuntu24 安装 mongocxx 驱动教程

本文是安装 MongoDB C++ 驱动程序(mongocxx)的详细教程,系统使用的是 Ubuntu24。
如果想安装 mongodb 数据库,在这里我并不推荐官方教程,推荐文章:如何在 Ubuntu 24.04 上安装 MongoDB 并确保其安全

安装依赖项

  1. 更新包管理器和安装必要的依赖项:
    sudo apt update
    sudo apt install -y cmake libssl-dev libsasl2-dev
    
  2. 现在的 mongocxx 驱动在构建时会自动检查是否存在 mongo-c-driver,如果不存在就会默认下载一个对应版本的 mongo-c-driver 并进行配置(包括 libbson),因此不需要再手动安装 mongo-c-driver 了。那么如果说你想使用指定版本的 mongo-c-driver 去构建 mongocxx 驱动,请看这篇教程

安装 mongocxx 驱动

cmake 版本要求至少 3.15
C++ 编译器 GCC 必须支持 C++17

  1. 首先创建一个目录存放 mongo-cxx-driver 源码,这里我选择直接使用当前用户的 home 目录。

    cd ~/.
    
  2. 下载 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
    
  3. 解压缩并进入到构建目录中(建议开始如下操作前,把 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
    
  4. 配置项目

    # 配置,默认 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,所以本篇教程请不要再继续往下看,请看这篇教程
    在这里插入图片描述

  5. 编译构建

    sudo cmake --build .
    
  6. 安装,会安装在 /usr/local 目录下

    sudo cmake --build . --target install
    
  7. 若想卸载 mongocxx,请使用如下两种方式之一:

    # 调用卸载目标
    sudo cmake --build . --target uninstall
    # 运行卸载脚本
    sudo <install-dir>/share/mongo-cxx-driver/uninstall.sh
    

测试安装

 下方将给出测试用例,请注意替换您数据库的用户名和密码

  1. ~/. 目录下创建示例 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;
    }
    
  2. 编译指令

    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
    
  3. 编译完成后,如果运行未出现如下问题,说明安装成功!恭喜您。
    img test 如果出现这个问题,并且 ldd test 显示未找到动态链接库:
    ldd test
    则需要手动指定动态库位置,具体操作如下,请注意你自己的 libmongocxx.so.3.11.0libbsoncxx.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 驱动的教程结束。


网站公告

今日签到

点亮在社区的每一天
去签到