[原创]CentOS 6.5编译C++_MongoDB驱动

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: [原创]CentOS 6.5编译C++_MongoDB驱动

CentOS 6.5编译MongoDB的C++驱动比较繁琐,鉴于今天编译成功,PO文一篇,记录编译过程:
阅读者要求:对Linux熟悉,小白请绕路。
编译环境各软件版本:
GCC 4.8.2
Boost 1.49
MongoDB v3.2.8
C++ Driver:MongoDB Legacy C++ Driver 1.1.2
Python 2.7.12
scons 2.4.1

1:安装mongodb

1.1:创建文件:/etc/yum.repos.d/mongodb-org-3.2.repo

内容为:

[mongodb-org-3.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.2.asc

1.2:通过yum进行安装

yum install -y mongodb-org-3.2.8 mongodb-org-server-3.2.8 mongodb-org-shell-3.2.8 mongodb-org-mongos-3.2.8 mongodb-org-tools-3.2.8

1.3:开启,关闭,重启MongoDB

service mongod start #开启
service mongod stop #关闭
service mongod restart #重启
service mongod status #查看mongod状态
chkconfig mongod on #开机自启动

1.4:配置MongoDB

配置文件是:/etc/mongod.conf,可自行进行配置

2:升级Python

自带的Python版本略低,我们升级到Python 2.7.12

参考文章:http://www.jyguagua.com/?p=2146

3:升级GCC

自带的GCC不支持C++ 11新特性,为了支持C++ 11,我们升级GCC至GCC 4.8.2

参考文章:http://www.jyguagua.com/?p=2191

4:安装Scons

下载scons的rpm安装包,然后通过rpm方式进行安装。

下载地址:http://scons.org/pages/download.html

rpm -ivh scons-2.4.1-1.noarch.rpm

5:安装Boost

参考:

[原创]CentOS 6.5安装boost 1.49

6:下载mongo-cxx-driver,采用scons进行编译

git clone -b legacy https://github.com/mongodb/mongo-cxx-driver.git
cd mongo-cxx-driver/
scons --c++11=on --sharedclient --use-sasl-client --ssl install

可能遇到编译的错误:

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

解决办法:

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

编译好的文件放置在build目录之中。

然后把编译安装好的mongodb的头文件,库拷贝到/usr/include和/usr/lib目录之中:

在build目录install之中,将include下的mongo文件夹(mongo-cxx-driver/build/install/include)拷贝至/usr/include,以及将mongo-cxx-driver/build/install/lib目录里的库文件拷贝至/usr/lib目录下

cd build/install/include
\cp -rf mongo/ /usr/include/
cd ../lib/
cp libmongoclient.* /usr/lib
cp libmongoclient.* /usr/lib64/

7:测试代码:

#include <iostream>
#include "mongo/client/dbclient.h" // for the driver

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 tutorial.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o tutorial

执行效果:

QQ截图20160801144415如果,遇到失败问题,可进行debug调试:

命令:

g++ -g -std=c++0x tutorial.cpp -pthread -lmongoclient -lboost_thread -lboost_system -lboost_regex -o tutorial

然后通过gdb命令进行debug即可,根据debug的结果进行问题检查。

原创文章,转载请注明: 转载自勤奋的小青蛙
本文链接地址: [原创]CentOS 6.5编译C++_MongoDB驱动

文章的脚注信息由WordPress的wp-posturl插件自动生成



|2|left
打赏

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: