C++11:OpenSuSe11下编译gcc 4.7.1

来源:互联网 发布:python 2.7支持中文吗 编辑:程序博客网 时间:2024/06/05 12:33

    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

原创粉丝点击