编译环境各软件版本:
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 |
|
5. 测试代码:
test.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
编译
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路径添加到搜索路径