mongo-cxx-driver-legacy-1.1.2 Linux编译记录

本文详细介绍如何在 gcc 4.8.5 环境下,使用 Boost 1.55 和 Python 2.7,通过 SCons 2.2.0 编译安装 MongoDB C++ 驱动和 OpenSSL 库。包括 OpenSSL 的下载、配置、编译及安装步骤,以及如何解决常见编译错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译环境各软件版本:

gcc version 4.8.5
Boost 1.55
Python 2.7
scons 2.2.0

以为要使用ssl所有需要OpenSSL库

编译安装OpenSSL

OpenSSL最新版本下载参见http://www.openssl.org/source/

1 下载openssl-1.1.1d.tar.gz

2 解压OpenSSL

tar xzvf openssl-1.1.1d.tar.gz

cd openssl-1.1.1d

3 配置openssl安装参数

./config --prefix=/usr/local/openssl --openssldir=ssl

config 配置安装参数的可执行文件;
–prefix 指定安装路径; 默认是’/usr/local/ssl’ ,这里貌似只能为绝对路径;(./和…/测试不好使)
–openssldir 配置参数路径,在只需要头文件和静态库时,感觉意义不大;(安装时这里的路径是在–prefix指定路径的子目录下的,可能和系统或版本有关系)


4 编译openssl

make

5、安装openssl

make install

bin目录下有openssl可执行文件,若执行刚才安装的openssl版本,可cd到bin目录下,执行./openssl(如果直接执行openssl则为系统默认的openssl,即/usr/bin/openssl)
include下有openssl文件夹,openssl文件夹为相关的头文件;
lib目录下有libcrypto.a和libssl.a静态库;
ssl文件夹为--openssldir=ssl指定文件夹;

------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.下载mongo-cxx-driver-legacy-1.1.2.tar.gz

2.解压tar -xzf mongo-cxx-driver-legacy-1.1.2.tar.gz

3.cd mongo-cxx-driver-legacy-1.1.2

4.编译 scons --c++11=on --ssl --use-sasl-client --sharedclient  --cpppath=/usr/local/boost_1_55_0/include/ --libpath=/usr/local/boost_1_55_0/lib/ --extralib=boost_system --extrapath=/usr/local/openssl/ --prefix=/usr/local/mongo-client-install install

参数:

--cpppath 指定boost库的头文件路径

--libpath指定boost库的库文件路径,不管在不在系统搜索路径,必须指定

--extralib 指定连接库,相当于gcc选项-l,因为在编译过程中发生boost库找不到的错误,查看错误日志,需要boost_system,所以此处把要连接的库添加上

---extrapath 指定额外依赖路径,此处开启了ssl 并且我的openssl路径不在系统搜索路径里, 所以要指定openssl路径,相当于gcc的 -I/usr/local/openssl/include  -L/usr/local/openssl/lib指定头文件和库

--prefix 指定安装路径,加上install选项才会进行安装,否则只编译生成库而已,如果不指定路径则默认安装在build/install/

可能遇到编译的错误:

Couldn't find SASL header/libraries
See /root/cpp_mongodb/git-mongo/mongo-cxx-driver/build/scons/config.log for details

解决办法:

1

yum install pkg-config openssl-devel cyrus-sasl-devel

 

5. 测试代码:

test.cpp

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

#include <iostream>

#include "mongo/client/dbclient.h"

 

void run() {

  mongo::DBClientConnection c;

  c.connect("localhost");

}

 

int main() {

    mongo::client::initialize();

    try {

        run();

        std::cout << "connected ok" << std::endl;

    } catch( const mongo::DBException &e ) {

        std::cout << "caught " << e.what() << std::endl;

    }

    return EXIT_SUCCESS;

}

 编译

g++ -std=c++0x test.cpp -I/usr/local/mongo-client-install/include/ -I/usr/local/boost_1_55_0/include/ -L/usr/local/mongo-client-install/lib/ -L/usr/local/boost_1_55_0/lib/ -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o test

运行

[root@ebs-38305 ~]# ./test   
connected ok

运行时可能会报错,相关的库找不到,解决办法添加使用到的库到搜索路径即可

如,在/etc/ld.so.conf.d目录下新建usr_local.conf文件

[root@ebs-38305 ~]# vi /etc/ld.so.conf.d/usr_local.conf

添加如下内容

/usr/local/mongo-client-install/lib
/usr/local/boost_1_55_0/lib

保存退出

执行ldconfig命令

[root@ebs-38305 ~]# ldconfig

再次运行./tes即可看到输出结果

如果用到了ssl也要把openssl路径添加到搜索路径

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值