Deepin编译安装 mongoc++ 驱动程序
本文为在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++ 驱动程序相关推荐
- linux下运行yolo,deepin(linux)编译安装yolo v4测试效果
# 背景 五一放假的最后一天我也凑了个热闹,试一下新鲜出炉的yolo v4, 由于没有装CUDA和CUDNN,只试了一下在CPU上的速度和效果,电脑环境及编译依赖如下: * deepin 15.11桌 ...
- Deepin Linux v20+手工编译安装Git 2.32.0最新版(升级Git版本)
安装说明 为什么要手工编译源代码安装 准备工作 安装依赖项 开始编译 关于Git-lfs 为什么要手工编译源代码安装 相信大家选用Deepin Linux v20发行版的原因十有八九都是一样的,dee ...
- mysql 5.7编译安装重启_mysql5.7源码编译安装
安装mysql前的准备: 一.安装依赖的库: yum install gcc-c++ ncurses-devel perl-Data-Dumper python-devel openssl open ...
- 编译安装linux内核步骤
编译安装linux内核步骤: 一.获取内核源码 源码网址:www.kernel.org 二.解压内核源码 首先以root帐号登录,然后进入/usr/src子目录.如果用户在安装Linux时,安装了内核 ...
- linux编译安装网卡驱动详解(网卡丢包)
安装编译网卡驱动 这两天发现一台server丢包很严重,使用cacti监控工具时能获得snmp包,时常又不能,丢包严重,导致使用ssh工具连接过慢,连接数据库访问超时,此时要先确定是中病毒还是网卡问题 ...
- Linux 编译安装内核
一.简介 内核,是一个操作系统的核心.它负责管理系统的进程.内存.设备驱动程序.文件和网络系统,决定着系统的性能和稳定性.Linux作为一个自由软件,在广大爱好者的支持下,内核版本不断更新.新的内核修 ...
- deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载
简介 目的 解决Linux Deepin在更新内核到5.10后无法使用蓝牙的问题. 硬件:联想小新13 Pro 2020 AMD R5 4600U OS: win 10 + deepin 20 原因 ...
- 在deepin上安装YouCompleteMe
详细安装步骤在github上有,https://github.com/Valloric/YouCompleteMe,我这里是自己总结的简化版安装步骤. 步骤1.安装Vundle 首先,clone到本地 ...
- linux脚本安装gcc,在Linux系统下不需要编译安装GCC9,有仓库安装模板脚本
本文给出[安装GCC9]仓库安装模板脚本,在Linux系统可以编译安装GCC9,但很多编译安装的应用,有难度. 复制以下代码,把它们保存到文本,然后给可执行权限,双击,终端运行,应为需要输入用户密码. ...
最新文章
- SAP MM Transportation of PR Release Strategy with Classification
- 设备选购需要注意的几个方面
- grunt使用小记之开篇:grunt概述
- React从0到1--JSX样式
- 360安卓_360手机助手安卓下载
- oracle11 odac,oracle 11g odac 下载
- STM32(3):番外篇之STM32名字解析
- iPhone屏幕尺寸(包含7p)
- 审稿意见的“so what”如何处理?
- 能不能算是PLSQL Developer的锅?
- 如何修改鼠标右键新建对象的顺序
- 【实用软件】二维码批量解析软件v1.0
- 第六周:整数转罗马数字
- 从1,3,5,7,9,11,13,15中选3个数(选择可重复)作和得30
- PHP对接美团API接口 实现卡卷核销功能
- 我的杂谈之学习陈氏太极拳精要18势
- Python图片自动缩放到指定大小(不拉伸不改变精度)
- DCT-Net 水记(用于 人脸风格化 的 小样本 图像翻译,无需反演,无需构造配对图片)
- Jetson TX2入门之开箱刷机跑demo
- MSE ZooKeeper 数据导入导出功能上线
热门文章
- Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)
- Hypermesh前处理+Abaqus有限元分析
- 基于Centos7.X的CS:GO社区服搭建
- RHEL6.4安装Oracle11gR2RAC的CRS
- ArcGIS Python工具箱中文乱码的解决办法
- 计算表和差分机(计算机基础课三)
- 优雅的underscore
- Bugtags 那些事儿
- [附源码]计算机毕业设计基于Web的软考题库平台Springboot程序
- vscode中matplotlib.pyplot 绘制的图像显示不出来