一、简易安装
操作环境 CentOS6.5 64bit,原版本4.4.7,不能支持C++11的特性~,希望升级到4.8.2
1.1 获取安装包并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 tar -jxvf gcc-@H_502_23@4.8.@H_502_23@2.tar.bz2
当然,http://ftp.gnu.org/gnu/gcc里面有所有的gcc版本供下载,最新版本已经有4.9.2啦.
1.2 下载供编译需求的依赖项
参考文献[1]中说:这个神奇的脚本文件会帮我们下载、配置、安装依赖库,可以节约我们大量的时间和精力。
1.3 建立一个目录供编译出的文件存放
1.4 生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
1.5 编译(注意:此步骤非常耗时)
make -j4
-j4选项是make对多核处理器的优化,如果不成功请使用make,相关优化选项可以移步至参考文献[2]。
我在安装此步骤时候出错,错误描述:
compilation terminated. make[@H_502_23@5]: *** [_gcov_merge_add.o] 错误 @H_502_23@1 make[@H_502_23@5]: Leaving directory `/home/imdb/gcc-@H_502_23@4.8.@H_502_23@2/gcc-build-@H_502_23@4.8.@H_502_23@2/x86_64-unknown-linux-gnu/@H_502_23@32/libgcc' make[@H_502_23@4]: *** [multi-do] 错误 @H_502_23@1 make[@H_502_23@4]: Leaving directory `/home/imdb/gcc-@H_502_23@4.8.@H_502_23@2/gcc-build-@H_502_23@4.8.@H_502_23@2/x86_64-unknown-linux-gnu/libgcc' make[@H_502_23@3]: *** [all-multi] 错误 @H_502_23@2 make[@H_502_23@3]: *** 正在等待未完成的任务.... make[@H_502_23@3]: Leaving directory `/home/imdb/gcc-@H_502_23@4.8.@H_502_23@2/gcc-build-@H_502_23@4.8.@H_502_23@2/x86_64-unknown-linux-gnu/libgcc' make[@H_502_23@2]: *** [all-stage1-target-libgcc] 错误 @H_502_23@2 make[@H_502_23@2]: Leaving directory `/home/imdb/gcc-@H_502_23@4.8.@H_502_23@2/gcc-build-@H_502_23@4.8.@H_502_23@2' make[@H_502_23@1]: *** [stage1-bubble] 错误 @H_502_23@2 make[@H_502_23@1]: Leaving directory `/home/imdb/gcc-@H_502_23@4.8.@H_502_23@2/gcc-build-@H_502_23@4.8.@H_502_23@2' make: *** [all] 错误 @H_502_23@2
大概看看,错误集中在x86_64unknown-linux-gnu/32/libgcc 和x86_64-unknown-linux-gnu/libgcc
根据参考文献[3],安装如下两个软件包(仅用于CentOS6.X):
sudo yum -y install glibc-devel.i686 glibc-devel
过程中cpu基本满载:
1.6、安装
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(@H_502_23@5)); 8 std::cout << *pInt << std::endl; 9 return @H_502_23@0; 10 }
验证文件:
g++ -std=c++@H_502_23@11 -o tryCpp11 tryCpp11.cc ./tryCpp11