图片中有个地方错了,编译mongodb driver, 必须使用系统自带的boost
编译主要分为如下,下面的所有组件都是直接并行编译,彼此之间不受影响
gcc
glibc
cppcms
cppdb
boost
mongo driver
gcc
# gcc
# yum install -y gcc-gnat
cd /usr/local/src
rm -rvf gcc-4.9.1 && mkdir gcc-4.9.1 && cd gcc-4.9.1 && rsync -avzP bigdata.vxlan.net::d/ide/gcc-4.9.1.tar.gz .
tar xzvf gcc-4.9.1.tar.gz
#./contrib/download_prerequisites
## using the following without a prefix, it will install on /usr/local/lib64
./configure --enable-checking=release --enable-languages=c,c++ --disable-multilib --prefix=/data/c++/gcc/ --build=x86_64-redhat-linux --enable-threads=posix
# export CFLAGS="-g -O2 -fPIC"
make -j20
make install
newBinPATH=/data/c++/gcc/bin
newIncludePATH=/data/c++/gcc/include
newLibPATH=/data/c++/gcc/lib64
# 方式二
export PATH=$newBinPATH:$PATH
export INCLUDE_PATH=$newIncludePATH:$INCLUDE_PATH
export LIBRARY_PATH=$newLibPATH:$LIBRARY_PATH
export CPLUS_INCLUDE_PATH=$newIncludePATH:$CPLUS_INCLUDE_PATH
export CPLUS_LIBRARY_PATH=$newLibPATH:$CPLUS_LIBRARY_PATH
glibc
rm -rvf /usr/local/src/glibc*
rm -rvf /usr/lcoal/test/glibc*
rm -rvf /usr/local/src/glibc-build*
cd /usr/local/src && rsync -avzP bigdata.vxlan.net::d/ide/glibc-2.14.tar.gz .
tar xzvf glibc-2.14.tar.gz
mkdir glibc-build && cd glibc-build
export CFLAGS="-g -O2 -fPIC"
../glibc-2.14/configure --prefix=/data/c++/glibc/ --enable-add-ons
make -j20
make install
boost
# http://www.neuraladvance.com/compiling-boost-on-linux.html
# 清场
rm -rvf /usr/local/src/boost*
rm -rvf /data/c++/boost*
# 下载编译安装
cd /usr/local/src && rsync -avzP bigdata.vxlan.net::d/ide/boost_1_55_0.tar.bz2 .
tar jxf boost_1_55_0.tar.bz2
cd boost_1_55_0
#./bootstrap.sh --with-icu --prefix=/data/c++/boost/
./bootstrap.sh --prefix=/data/c++/boost/
./b2 -j 24
./b2 install
# include file
rsync -avzP /data/c++/boost/include/boost /usr/include/
# 后期处理
rsync -avzP /data/c++/boost/include/* /usr/include/
rsync -avzP /data/c++/boost/lib/* /usr/local/lib/
cppcms 1.0.4
export http_proxy="http://XXXX:3128"
# cppCMS
# apt-get install cmake
# yum install cmake
# 清场
rm -rvf /usr/local/src/cppcms*
rm -rvf /data/c++/cppcms*
# 下载编译安装
cd /usr/local/src
rsync -avzP bigdata.vxlan.net::d/ide/cppcms-1.0.4.tar.bz2 .
tar jxvf cppcms-1.0.4.tar.bz2
cd cppcms-1.0.4
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/data/c++/cppcms ..
make -j 24
make install
# include file
rm -rf /usr/include/cppcms
rm -rf /usr/include/booster
rsync -avzP /data/c++/cppcms/include/* /usr/include/
# rsync -avzP /data/c++/cppcms/lib/* /usr/local/lib/
# rsync -avzP /data/c++/cppcms/bin/* /bin/
export PATH=/data/c++/cppcms/bin/:$PATH
mongodriver
# mongoclient
# mongoclient C++
# git clone https://github.com/mongodb/mongo-cxx-driver.git
# https://github.com/mongodb/mongo-cxx-driver/wiki/Download%20and%20Compile
# http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html
# apt-get install scons -y
# yum install scons
# 清场
rm -rvf /usr/local/src/mongo*
rm -rvf /data/c++/mongo*
# 下载编译安装
cd /usr/local/src
rsync -avzP bigdata.vxlan.net::d/ide/mongo-cxx-driver .
cd mongo-cxx-driver
git checkout 26compat
#
# export LIBRARY_PATH=/data/c++/boost/lib/
scons --use-system-boost --sharedclient --full install-mongoclient --libpath=/data/c++/boost/lib/ --cpppath=/data/c++/boost/include/ --prefix=/data/c++/mongoclientc++/ -j 20
# scons --use-system-boost --sharedclient --full install-mongoclient --prefix=/data/c++/mongoclientc++/ -j 20
# include file
rsync -avzP /data/c++/mongoclientc++/include/mongo /usr/include/
/data/c++/cppcms/lib
/data/c++/boost/lib
/data/c++/mongoclientc++/lib
scons --prefix=/data/c++/ --use-system-boost --sharedclient --full install-mongoclient -j 24
# 后期处理
# rsync -avzP /data/c++/mongoclientc++/include/* /usr/include/
# rsync -avzP /data/c++/mongoclientc++/lib/* /usr/local/lib/
ldconfig
cppdb
# cppdb
rm -rf /usr/local/src/cppdb-trunk
cd /usr/local/src
rsync -avzP bigdata.vxlan.net::d/cppdb/cppdb-trunk .
cd cppdb-trunk
mkdir build
cd build
cmake -DCMAKE_INSTALL_PREFIX=/data/c++/cppdb ..
make -j 20
make install
# include file
rsync -avzP /data/c++/cppdb/include/cppdb /usr/include/
ldconfig
#
cd /data
mkdir c++
cd c++ && rsync -avzP bigdata.vxlan.net::d/c++/c++.20150908.tar.gz .
tar xzvf c++.20150908.tar.gz
# /etc/ld.so.conf.d/XX.conf
echo '
/data/c++/boost/lib
/data/c++/mongoclientc++/lib
/data/c++/cppdb/lib
/data/c++/glibc/lib
/data/c++/gcc/lib64
' > /etc/ld.so.conf.d/bigdata.conf
# ldconfig
# ldconfig -p | grep cppcms
总结
# 程序运行
export PATH=/data/c++/cppcms/bin:/data/c++/gcc/bin:$PATH
# 编译的时候用到
export LIBRARY_PATH=/data/c++/gcc/lib64:/data/c++/cppcms/lib:/data/c++/mongoclientc++/lib:/data/c++/boost/lib:/data/c++/cppdb/lib:/data/c++/mine/lib/:/data/c++/glibc/lib
# 运行的时候用到
export LD_LIBRARY_PATH=/data/c++/gcc/lib64:/data/c++/cppcms/lib:/data/c++/mongoclientc++/lib:/data/c++/boost/lib:/data/c++/cppdb/lib:/data/c++/mine/lib/:/data/c++/glibc/lib
# cppcms用gcc 4.4.7 或者 4.9.1 貌似都不所谓