前言
丢了一个编译环境,重新搭一个.
虽然别人已经做了mongocxx3.1.1编译的试验,但是自己做,还是一堆问题. 每个人的环境不一样, 出了没有答案的问题,要很久才能想明白。
试验环境
debian7.5(在干净的光盘安装的基础上, 将原版的gcc4.x升级到gcc4.7, 装了gdb), 可以编译一般的工程,但是无法编译c++11的工程.
试验目标
搭建一个可以编译使用mongocxx3.1.1的linux-c工程的编译环境
参考资料
https://blog.csdn.net/hhq163/article/details/52056948
试验材料
stuff_for_build_mongocxx_3.1.1.7z
压缩包中的文件列表:
automake-1.14.tar.gz
cmake-3.2.2.tar.gz
gcc-4.8.5.tar.bz2
libbson-1.6.0.tar.gz
mongo-c-driver-1.6.0.tar.gz
r3.1.1.tar.gz <= 这个是mongocxx_3.1.1的源码包
做完试验整理了一个vmware14的虚拟机镜像, gcc4.8.5(支持c++11), gdb8.1, mongocxx3.1.1应用编译环境都备好了.共4个分卷。
debian7.5_mongocxx_3.1.1_build_env_ok.7z.001
debian7.5_mongocxx_3.1.1_build_env_ok.7z.002
debian7.5_mongocxx_3.1.1_build_env_ok.7z.003
debian7.5_mongocxx_3.1.1_build_env_ok.7z.004
试验记录
软件源
root@debian750devmin:/home/dev# cat /etc/apt/sources.list
#
deb http://ftp.cn.debian.org/debian/ wheezy main contrib non-free
deb http://ftp.cn.debian.org/debian sid main
安装gcc4.8.x
已经做了一个单独的试验
https://blog.csdn.net/lostspeed/article/details/80631397
安装cmake3.x
cmake –version
如果没装cmake, 就需要装cmake3.x
如果装了低版cmake, 先卸了
aptitude remove cmake
下载cmake-3.2.2
cd /home/dev
http://www.cmake.org/files/v3.2/cmake-3.2.2.tar.gz 下载不动
从csdn下载了一个 cmake-3.2.2.tar.gz
copy cmake-3.2.2.tar.gz to /home/dev/
cd /home/dev/
tar -xzvf ./cmake-3.2.2.tar.gz
cd cmake-3.2.2
./configure
make
make install
安装位置
/usr/local/bin/cmake
查看cmake安装信息
root@debian750devmin:/home/dev# cmake –version
cmake version 3.2.2
安装MongoDB C driver
cd /home/dev
wget https://github.com/mongodb/mongo-c-driver/releases/download/1.6.0/mongo-c-driver-1.6.0.tar.gz
服务器可能忙, 下载了几次才开始下载.
aptitude install pkg-config
aptitude install openssl
tar -xvzf mongo-c-driver-1.6.0.tar.gz
cd /home/dev/mongo-c-driver-1.6.0
// –enable-ssl 选项重要, mongocxx会调用mongoc的2个带ssl的API.
./configure –disable-automatic-init-and-cleanup –enable-ssl
make
make install
安装位置
/usr/local/lib
root@debian750devmin:/home/dev/mongo-c-driver-1.6.0# ls /usr/local/lib/mongo
-rwxr-xr-x 1 root staff 1007 6月 9 20:23 /usr/local/lib/libmongoc-1.0.la*
lrwxrwxrwx 1 root staff 22 6月 9 20:23 /usr/local/lib/libmongoc-1.0.so -> libmongoc-1.0.so.0.0.0*
lrwxrwxrwx 1 root staff 22 6月 9 20:23 /usr/local/lib/libmongoc-1.0.so.0 -> libmongoc-1.0.so.0.0.0*
-rwxr-xr-x 1 root staff 410254 6月 9 20:23 /usr/local/lib/libmongoc-1.0.so.0.0.0*
安装automake
cd /home/dev
wget http://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz
tar -zxvf automake-1.14.tar.gz
cd automake-1.14
aptitude install autoconf
aptitude install perl
./bootstrap.sh
./configure
make
安装libbson
cd /home/dev
wget https://github.com/mongodb/libbson/releases/download/1.6.0/libbson-1.6.0.tar.gz
tar -xzvf libbson-1.6.0.tar.gz
cd libbson-1.6.0/
aclocal
./configure
make
make install
安装mongocxx driver
cd /home/dev
wget https://github.com/mongodb/mongo-cxx-driver/archive/r3.1.1.tar.gz
tar -zxvf r3.1.1.tar.gz
cd ./mongo-cxx-driver-r3.1.1
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/
// 需要git来下载EP_mnmlstc_core, 必须安装git
aptitude install git
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
// 会自动下载,编译EP_mnmlstc_core
make
make install
// 安装位置
– Installing: /usr/local/lib/libmongocxx.so.3.1.1
– Installing: /usr/local/lib/libmongocxx.so._noabi
– Installing: /usr/local/lib/libmongocxx.so
– Set runtime path of “/usr/local/lib/libmongocxx.so.3.1.1” to “/usr/local/lib”
– Installing: /usr/local/lib/libmongocxx.a
安装mysql client
这步和本主题无关, 是我自己的工程需要
aptitude install mysql-client
// 安装位置
/usr/lib/libreoffice/program/libmysqllo.so
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18.0.0
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18
/usr/lib/x86_64-linux-gnu/libmysqlclient_r.so.18
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.18.0.0
安装gdb
这步和本主题无关, 是我自己的工程需要
下载了一个新版gdb.
download gdb-8.1.tar.xz from http://ftp.gnu.org/gnu/gdb/
csdn下载点 :gdb-8.1.tar.xz
xz -d gdb-8.1.tar.xz
tar -xvf ./gdb-8.1.tar
cd ./gdb_8.1
./configure
make
make install
gdb -tui …
gdb: TUI mode is not supported
./configure –enable-tui=yes
make
configure: error: no enhanced curses library found; disable TUI
aptitude install libncurses
aptitude install libncurses5-dev
./configure –enable-tui=yes
make
make install