本文为在Deepin20.9环境下安装mongoc++驱动的过程记录。

一、安装环境:

操作系统:Deepin 20.9

mongo版本:docker mongoDB 5.0.17

gcc版本:12.2.0 默认支持C++17 要求C++11及以上

cmake版本:3.24.2 要求3.2及以上

openssl版本:1.1.1d17 要求1.1及以上

查看下表支持mongoDB5.0的mongocxx-driver驱动版本为3.7

二、安装MongoDB C驱动

1、libmongoc版本要求

Mongoc++驱动程序建立在 MongoDB C 驱动之上,mongocxx-3.7.x需要libmongoc 1.22.1 或更高版本。

2、优先选择包管理器安装

(1)检查包管理器提供的libmongoc版本

$ apt list libmongoc*

正在列表... 完成

libmongoc-1.0-0/未知,now 1.14.0-1 amd64 [已安装]

libmongoc-1.0-0/未知 1.14.0-1 i386

libmongoc-dev/未知,now 1.14.0-1 amd64 [已安装]

libmongoc-dev/未知 1.14.0-1 i386

libmongoc-doc/未知,未知,now 1.14.0-1 all [已安装]

libmongoclient-dev/未知 1.1.3-3 amd64

libmongoclient-dev/未知 1.1.3-3 i386

libmongoclient0/未知 1.1.3-3 amd64

libmongoclient0/未知 1.1.3-3 i386

$

(2)如果包管理器提供的libmongoc版本>1.22.1,则使用包管理器安装:

$ sudo apt install libmongoc-1.* libbson-1.*

(3)此处包管理器提供的libmongoc版本为1.14.0-1<1.22.1,则需要下载最新的源代码构建。

3、源代码构建安装

(1)准备源代码

①查看最新源代码版本

查看URL地址:

https://github.com/mongodb/mongo-c-driver/releases

经查mongoc当前最新版本为1.23.4。

②下载mongo-c-driver源代码

$ wget https://github.com/mongodb/mongo-c-driver/releases/download/ 1.23.4/mongo-c-driver-1.23.4.tar.gz

............

已发出 HTTP 请求,正在等待回应... 200 OK

长度:7795336 (7.4M) [application/octet-stream]

正在保存至: “mongo-c-driver-1.23.4.tar.gz”

mongo-c-driver-1.23.4.tar.gz 100%[=======================================>]   7.43M  19.6KB/s  用时 6m 29s  =

2023-05-11 11:02:46 (19.6 KB/s) - 已保存 “mongo-c-driver-1.23.4.tar.gz” [7795336/7795336])

$

③解压源代码包

$ tar xzf mongo-c-driver-1.23.4.tar.gz

(2)准备构建环境

$ sudo sh -c 'curl -s --location https://www.mongodb.org/static/pgp/libmongocrypt.asc | gpg --dearmor >/etc/apt/trusted.gpg.d/libmongocrypt.gpg'

echo "deb https://libmongocrypt.s3.amazonaws.com/apt/debian buster/libmongocrypt/1.7 main" | sudo tee /etc/apt/sources.list.d/libmongocrypt.list

$ sudo apt update

$ sudo apt install lld glibc-source gawk bison libzstd-dev libssl-dev libsasl2-dev libmongocrypt-dev

(3)构建安装libmongoc

默认安装到目录/usr/local下,即包在/usr/local/lib下,头文件在/usr/local/include下。

$ cd mongo-c-driver-1.23.4

$ mkdir cmake-build

$ cd cmake-build

$ cmake -DENABLE_AUTOMATIC_INIT_AND_CLEANUP=OFF ..

......

$ make

......

$ sudo make install

......

Install the project...

-- Install configuration: "RelWithDebInfo"

......

-- Installing: /usr/local/lib/libbson-1.0.so.0.0.0

-- Up-to-date: /usr/local/lib/libbson-1.0.so.0

-- Up-to-date: /usr/local/lib/libbson-1.0.so

-- Installing: /usr/local/lib/libbson-static-1.0.a

......

-- Installing: /usr/local/lib/libmongoc-1.0.so.0.0.0

-- Up-to-date: /usr/local/lib/libmongoc-1.0.so.0

-- Set runtime path of "/usr/local/lib/libmongoc-1.0.so.0.0.0" to ""

-- Up-to-date: /usr/local/lib/libmongoc-1.0.so

-- Installing: /usr/local/lib/libmongoc-static-1.0.a

$

待查问题:

Policy CMP0075 is not set: Include file check macros honor                                                                               -- Looking for strlcpy - not found

-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed

-- Looking for res_ndestroy - not found

-- Looking for sched_getcpu - not found

三、编译安装mongoc++驱动

1、下载mongoc++源代码

①查看最新mongoc++驱动版本

查看URL地址:

https://github.com/mongodb/mongo-cxx-driver/releases

最新mongoc++驱动版本为3.7.1:

②下载mongoc++驱动

$ curl -OL https://github.com/mongodb/mongo-cxx-driver/releases/download/r3.7.1/mongo-cxx-driver-r3.7.1.tar.gz

% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

Dload  Upload   Total   Spent    Left  Speed

0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0

100 1411k  100 1411k    0     0  58876      0  0:00:24  0:00:24 --:--:-- 36445

$

③解压源代码包

$ tar -xzf mongo-cxx-driver-r3.7.1.tar.gz

$ cd mongo-cxx-driver-r3.7.1/build

2、配置构建

(1)构建选项说明

指定构建类型

-DCMAKE_BUILD_TYPE={[RelWithDebInfo]|Release|Debug}

RelWithDebInfo     默认构建带调试的发布包

Release                 构建发布包

Debug                    构建调试包

指定依赖的mongoc驱动库路径,当有多个依赖库路径时,用分号分隔并用双引号包括。

-DCMAKE_PREFIX_PATH=<依赖mongo-c库路径>

指定mongocxx驱动库的安装路径

-DCMAKE_INSTALL_PREFIX=<mongo-cxx库路径>

指定mongocxx驱动库的非标准安装路径

-DCMAKE_INSTALL_RPATH=<mongo-cxx库路径>

指定同时构建动态和静态库,默认只构建动态库

-DBUILD_SHARED_AND_STATIC_LIBS=ON

例:安装到标准路径/usr/local

cmake .. -DCMAKE_BUILD_TYPE=Release \

-DCMAKE_INSTALL_PREFIX=/usr/local

例:安装到非标准路径/opt/mongo

cmake .. -DCMAKE_BUILD_TYPE=Release         \

-DCMAKE_INSTALL_PREFIX=/opt/mongo  \

-DCMAKE_INSTALL_RPATH=/opt/mongo

例:构建时指定libmongoc路径/opt/mongo-c-driver和mongocxx安装路径/opt/mongo-cxx-driver

cmake .. -DCMAKE_BUILD_TYPE=Release                      \

-DCMAKE_PREFIX_PATH=/opt/mongo-c-driver         \

-DCMAKE_INSTALL_PREFIX=/opt/mongo-cxx-driver

(2)配置

本文使用的构建配置:

.../build$ cmake .. -DCMAKE_BUILD_TYPE=Release \

-DBSONCXX_POLY_USE_MNMLSTC=1  \

-DCMAKE_INSTALL_PREFIX=/usr/local

......

-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed

......

-- Build files have been written to: /home/xman/mongodb-driver/mongo-cxx-driver-r3.7.1/build

.../build$

3、构建安装

(1)安装MNMLSTC

.../build$ sudo cmake --build . --target EP_mnmlstc_core

......

[100%] Built target EP_mnmlstc_core

.../build$

(2)构建

.../build$ cmake --build .

[  1%] Built target EP_mnmlstc_core

......

[  4%] Linking CXX shared library libbsoncxx.so

[  4%] Built target bsoncxx_shared

......

[ 35%] Linking CXX shared library libmongocxx.so

[ 35%] Built target mongocxx_shared

......

[100%] Built target test_versioned_api

.../build$

(3)安装

.../build$ sudo cmake --build . --target install

[  1%] Built target EP_mnmlstc_core

Consolidate compiler generated dependencies of target bsoncxx_shared

[  4%] Built target bsoncxx_shared

......

[ 35%] Built target mongocxx_shared

......

[100%] Built target test_versioned_api

Install the project...

-- Install configuration: "Release"

-- Installing: /usr/local/share/mongo-cxx-driver/LICENSE

......

-- Installing: /usr/local/lib/libbsoncxx.so.3.7.1

-- Installing: /usr/local/lib/libbsoncxx.so._noabi

-- Set runtime path of "/usr/local/lib/libbsoncxx.so.3.7.1" to "/usr/local/lib"

-- Installing: /usr/local/lib/libbsoncxx.so

......

-- Installing: /usr/local/lib/pkgconfig/libbsoncxx.pc

-- Installing: /usr/local/include/mongocxx/v_noabi/mongocxx

......

-- Installing: /usr/local/lib/libmongocxx.so.3.7.1

-- Installing: /usr/local/lib/libmongocxx.so._noabi

-- Set runtime path of "/usr/local/lib/libmongocxx.so.3.7.1" to "/usr/local/lib"

-- Installing: /usr/local/lib/libmongocxx.so

......

-- Installing: /usr/local/share/mongo-cxx-driver/uninstall.sh

.../build$

(4)卸载

卸载方式一:

$ sudo cmake --build . --target uninstall

卸载方式二:

$ sudo /usr/local/share/mongo-cxx-driver/uninstall.sh

Deepin编译安装 mongoc++ 驱动程序相关推荐

  1. linux下运行yolo,deepin(linux)编译安装yolo v4测试效果

    # 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...

  2. Deepin Linux v20+手工编译安装Git 2.32.0最新版(升级Git版本)

    安装说明 为什么要手工编译源代码安装 准备工作 安装依赖项 开始编译 关于Git-lfs 为什么要手工编译源代码安装 相信大家选用Deepin Linux v20发行版的原因十有八九都是一样的,dee ...

  3. mysql 5.7编译安装重启_mysql5.7源码编译安装

    安装mysql前的准备: 一.安装依赖的库: yum install  gcc-c++ ncurses-devel perl-Data-Dumper python-devel openssl open ...

  4. 编译安装linux内核步骤

    编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核 ...

  5. linux编译安装网卡驱动详解(网卡丢包)

    安装编译网卡驱动 这两天发现一台server丢包很严重,使用cacti监控工具时能获得snmp包,时常又不能,丢包严重,导致使用ssh工具连接过慢,连接数据库访问超时,此时要先确定是中病毒还是网卡问题 ...

  6. Linux 编译安装内核

    一.简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修 ...

  7. deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载

    简介 目的 解决Linux Deepin在更新内核到5.10后无法使用蓝牙的问题. 硬件:联想小新13 Pro 2020 AMD R5 4600U OS: win 10 + deepin 20 原因 ...

  8. 在deepin上安装YouCompleteMe

    详细安装步骤在github上有,https://github.com/Valloric/YouCompleteMe,我这里是自己总结的简化版安装步骤. 步骤1.安装Vundle 首先,clone到本地 ...

  9. linux脚本安装gcc,在Linux系统下不需要编译安装GCC9,有仓库安装模板脚本

    本文给出[安装GCC9]仓库安装模板脚本,在Linux系统可以编译安装GCC9,但很多编译安装的应用,有难度. 复制以下代码,把它们保存到文本,然后给可执行权限,双击,终端运行,应为需要输入用户密码. ...

最新文章

  1. SAP MM Transportation of PR Release Strategy with Classification
  2. 设备选购需要注意的几个方面
  3. grunt使用小记之开篇:grunt概述
  4. React从0到1--JSX样式
  5. 360安卓_360手机助手安卓下载
  6. oracle11 odac,oracle 11g odac 下载
  7. STM32(3):番外篇之STM32名字解析
  8. iPhone屏幕尺寸(包含7p)
  9. 审稿意见的“so what”如何处理?
  10. 能不能算是PLSQL Developer的锅?
  11. 如何修改鼠标右键新建对象的顺序
  12. 【实用软件】二维码批量解析软件v1.0
  13. 第六周:整数转罗马数字
  14. 从1,3,5,7,9,11,13,15中选3个数(选择可重复)作和得30
  15. PHP对接美团API接口 实现卡卷核销功能
  16. 我的杂谈之学习陈氏太极拳精要18势
  17. Python图片自动缩放到指定大小(不拉伸不改变精度)
  18. DCT-Net 水记(用于 人脸风格化 的 小样本 图像翻译,无需反演,无需构造配对图片)
  19. Jetson TX2入门之开箱刷机跑demo
  20. MSE ZooKeeper 数据导入导出功能上线

热门文章

  1. Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)
  2. Hypermesh前处理+Abaqus有限元分析
  3. 基于Centos7.X的CS:GO社区服搭建
  4. RHEL6.4安装Oracle11gR2RAC的CRS
  5. ArcGIS Python工具箱中文乱码的解决办法
  6. 计算表和差分机(计算机基础课三)
  7. 优雅的underscore
  8. Bugtags 那些事儿
  9. [附源码]计算机毕业设计基于Web的软考题库平台Springboot程序
  10. vscode中matplotlib.pyplot 绘制的图像显示不出来