操做环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,但愿升级到4.8.2php
不能经过yum的方法升级,须要本身手动下载安装包并编译html
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 tar -jxvf gcc-4.8.2.tar.bz2
固然,http://ftp.gnu.org/gnu/gcc 里面有全部的gcc版本供下载,最新版本已经有4.9.2啦.linux
参考文献[1]中说:这个神奇的脚本文件会帮咱们下载、配置、安装依赖库,能够节约咱们大量的时间和精力。ios
cd gcc-4.8.0 ./contrib/download_prerequisites
mkdir gcc-build-4.8.2 cd gcc-build-4.8.2
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
make -j4
-j4选项是make对多核处理器的优化,若是不成功请使用 make,相关优化选项能够移步至参考文献[2]。c++
我在安装此步骤时候出错,错误描述:bootstrap
compilation terminated. make[5]: *** [_gcov_merge_add.o] 错误 1 make[5]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/32/libgcc' make[4]: *** [multi-do] 错误 1 make[4]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc' make[3]: *** [all-multi] 错误 2 make[3]: *** 正在等待未完成的任务.... make[3]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2/x86_64-unknown-linux-gnu/libgcc' make[2]: *** [all-stage1-target-libgcc] 错误 2 make[2]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2' make[1]: *** [stage1-bubble] 错误 2 make[1]: Leaving directory `/home/imdb/gcc-4.8.2/gcc-build-4.8.2' make: *** [all] 错误 2
大概看看,错误集中在 x86_64unknown-linux-gnu/32/libgcc 和 x86_64-unknown-linux-gnu/libgcccentos
根据参考文献[3],安装以下两个软件包(仅用于CentOS6.X):网络
sudo yum -y install glibc-devel.i686 glibc-devel
过程当中CPU基本满载:ide
sudo make install
重启,而后查看gcc版本:测试
gcc -v
尝试写一个C++11特性的程序段 tryCpp11.cc,使用了shared_ptr
1 //tryCpp11.cc 2 #include <iostream> 3 #include <memory> 4 5 int main() 6 { 7 std::shared_ptr<int> pInt(new int(5)); 8 std::cout << *pInt << std::endl; 9 return 0; 10 }
验证文件:
g++ -std=c++11 -o tryCpp11 tryCpp11.cc ./tryCpp11
--------------------------------------------------------------------------------------------------------------------
CentOS 6.4 编译安装 gcc 4.8.1
今天在isocpp上看到“GCC 4.8.1 released, C++11 feature complete”这个消息,很是兴奋。终于有一个全面支持C++11语言特性的编译器了!
固然了,gcc仅仅是语言特性上全面支持C++11,libstdc++貌似尚未彻底跟上,不过我已经挺知足了,至少能够去尝试各类特性了。另外,以前也有消息说Clang功能上也100%支持C++11了,可是内部还在作测试,Clang3.3的release版听说6月5号正式发布,最近对于C++来讲大事真多啊,很期待!
今天下午看到这个消息,晚上就实在忍不住了,赶忙把最新的gcc下载下来编译安装起来,下面介绍下安装步骤:
安装以前,仍是提醒下你们:一些基本的准备工做我就不说了,好比得装个Linux(CentOS,Ubuntu等等),而后装上基本的编译环境,用较老的编译环境编译新的编译器,这叫自举(bootstrap)。若是编译的过程,提示出错,就按照提示去把环境装好,再也不详细说明。
一、下载gcc 4.8.1源码包:
http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-4.8.1/gcc-4.8.1.tar.bz2
我是虚拟机里面装的Linux,我嫌wget太慢,因此本身在Windows上用迅雷下好,而后共享到Linux中。
二、解压:
tar -jxvf gcc-4.8.1.tar.bz2
三、下载编译所需的依赖包:
这个步骤有两种方式完成:
a) 若是Linux有网络链接,直接这样:
cd gcc-4.8.1
./contrib/download_prerequisites
cd ..
b) 若是Linux没有网络链接(我主机和虚拟机是Host-only,不能联网,因此另外想办法),则用Windows上网下载这几个包:
ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2
http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2
http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz
有人问,必定要下载几个版本吗?下载最新的版本行不行?我没试过,也不知道,我是按照gcc-4.8.1/contrib/download_prerequisites脚本里面的版本下载的。既然里面已经说了这几个版本,那我就严格按照它的要求来作。
而后解压并移动到gcc-4.8.1下面:
tar -xjf gmp-4.3.2.tar.bz2
tar -xjf mpfr-2.4.2.tar.bz2
tar -xzf mpc-0.8.1.tar.gz
mv gmp-4.3.2 gcc-4.8.1/gmp
mv mpfr-2.4.2 gcc-4.8.1/mpfr
mv mpc-0.8.1 gcc-4.8.1/mpc
这样的作法好处是,不用单独编译gmp、mpfr和mpc三个包,放在gcc源码下面一块儿编译(事实上这也是gcc-4.8.1/contrib/download_prerequisites脚本的作法,我的感受更简洁些)。
四、新建目录用于存放编译结果:
mkdir gcc-build-4.8.1
五、进入新目录,并执行configure命令,产生makefile:
cd gcc-build-4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
具体选项很少解释,你们能够本身查看,我只用到c和c++,因此只编译这两种语言的编译器。
六、编译:
make -j4
我是i5四核,因此开4个线程同时编译,要是有8核就更爽了~我在虚拟机里面花了30分钟不到的时间,不算太慢了。
七、安装:
sudo make install
八、大功告成,检查版本:
g++ --version
g++ (GCC) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
【参考文章】:
http://rritw.com/a/caozuoxitong/OS/20130407/335815.html
http://www.lainme.com/doku.php/blog/2012/06/%E5%9C%A8centos_5%E4%B8%8A%E7%BC%96%E8%AF%91gcc_4.7
http://www.cnblogs.com/chuncn/archive/2010/10/15/1851853.html