C++11发布有了一年,一直没有激情来学习新的特性。GCC 4.7.1编译器也是支持C++11比较好的编译器。本帖简单把GCC编译器,在OpenSuSe11编译的过程给纪录下来,以供自己或大家参考。这里的过程,也是网上搜索的,尝试编译成功,在此向他们表示感谢,在后文列出链接。
GCC 4.7.1版本编译需要三个库,GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0+,至于为什么需要这三个库,没搞明白,安装起来也不复杂,留待以后再说吧。三个库的链接如下所示,可以下载能够配套上的版本。
http://www.multiprecision.org/mpc下载mpc-0.9.tar.gz
ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.1.tar.bz2 下载gmp-5.0.1.tar.bz2
http://ftp.gnu.org/gnu/mpfr/ 下载mpfr-3.1.0.tar.xz。
第一步:安装gmp,在跟opt目录吓创建gmp-5.0.1存放库文件,命令如下:
#sudo mkdir -p /opt/gmp-5.0.1
#tar -jxvf gmp-5.0.1.tar.bz2
#cd gmp-5.0.1
#./configure --prefix=/opt/gmp-5.0.1
#make && make check && sudo make install
第二步:安装mpfr,安装mpfr是需要依赖gmp库,命令如下:
#sudo mkdir -p /opt/mpfr-3.1.1
#tar -jxvf mpfr-3.1.1.tar.bz2
#cd mpfr-3.1.1
#./configure --prefix=/opt/mpfr-3.1.1 --with-gmp=/opt/gmp-5.0.1
#make && make check && sudo make install
第三步:安装npc,mpc依赖gmp和mpfr库,命令如下:
#sudo mkdir -p /opt/mpc-0.9
#tar -zxvf mpc-0.9.tar.gz
#cd mpc-0.9
#./configure --prefix=/opt/mpc-0.9 --with-gmp=/opt/gmp-5.0.1 --with-mpfr=/opt/mpfr-3.1.1
#make && make check && sudo make install
第四步:安装gcc
下载gcc4.7.1版本,网上有很多,找对4.7.1版本,下载的路径:http://gcc.gnu.org/mirrors.html。命令如下:
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/gmp-5.0.1/lib:/opt/mpfr-3.1.1/lib:/opt/mpc-0.9/lib
#sudo mkdir -p /opt/gcc-4.7.1
#mkdir build && cd build
#../gcc-4.7.1/configure --prefix=/opt/gcc-4.7.1 --with-gmp=/opt/gmp-5.0.1 --with-mpfr=/opt/mpfr-3.1.1 --with-mpc=/opt/mpc-0.9
#make -j8
漫长的等待,用的是虚拟机,更是慢,编译顺利的话,就可以执行。这里的-j8选项是表示同时有8个并发任务编译,在性能比较好机器上,可能没有问题。如果性能比较差,不建议用这个选项,我在双核的机器编译出现问题。可以直接make,不加这个j选项。
#make check
#make install
第五步:设置gcc路径,安装gcc环境,要使得新版本起作用
#vim gccvars.sh
# filename: gccvars.sh
# source gccvars.sh to set the environment of gcc
export C_INCLUDE_PATH=/usr/include:$C_INCLUDE_PATH
export CPLUS_INCLUDE_PATH=$C_INCLUDE_PATH
export OBJC_INCLUDE_PATH=$C_INCLUDE_PATH
export LIBRARY_PATH=/usr/lib:$LIBRARY_PATH
export GCCDIR=/opt/gcc-4.7.1
export PATH=$GCCDIR/bin:$PATH
export LD_LIBRARY_PATH=$GCCDIR/lib:$GCCDIR/lib64:/opt/gmp-5.0.1/lib:/opt/mpfr-3.1.1/lib:/opt/mpc-0.9/lib:$LD_LIBRARY_PATH
export MANPATH=$GCCDIR/share/man:$MANPATH
#source gccvars.sh
第六步:测试c++代码
#vim test.cpp
// filename: test.cpp
// Program to test the new C++11 lambda syntax
// g++ test.cpp -std=c++11 -o a.out
#include <iostream>
using namespace std;
int main()
{
cout << [](int m, int n) { return m + n;} (2,4) << endl;
return 0;
}
#g++ test.cpp -std=c++11 -0 test
#./test
备注:缺省的gcc版本过低,为了不必要每次都安装gcc环境,可以在系统启动的时候,把gcc给安装好。把gccvars.sh文件的内容添加到/etc/profile文件的末尾。
参考:
1、http://blog.csdn.net/gengshenghong/article/details/7498085
2、http://blog.sina.com.cn/s/blog_493667730100zt6n.html