Linux下编译安装GCC 4.9.4
目录
开发机系统是CentOS 6.6,GCC版本是4.4.7,老司机们已经开着C++11上路了,话不多说,抓紧上车。
下载GCC
ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.4/gcc-4.9.4.tar.gz 官方FTP
http://ftpmirror.gnu.org 自动选择速度较快的镜像站
下载依赖包
可通过两种方式下载:
-
自动下载,运行GCC源码目录内置脚本:
cd gcc-4.9.4 sh ./contrib/download_prerequisites
-
手动下载、解压,然后执行命令:
cd gcc-4.9.4 ln -sf path/to/gmp-x.x.x gmp ln -sf path/to/mpc-x.x.x mpc ln -sf path/to/mpfr-x.x.x mpfr
这样,编译GCC同时自动构建上述3个库。
注意要保证3个包的源码目录是干净的,否则可能报错,必要时可执行make distclean
版本要求参考脚本*./contrib/download_prerequisites*,以4.9.4为例
# Necessary to build GCC.
MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1
编译安装
官方文档强烈建议在源码目录之外,新建一个临时目录,用于编译;
个人建议设置安装目录,便于GCC多版本管理;
configure选项,可以根据需求自行配置。
mkdir build-gcc-4.9.4
cd build-gcc-4.9.4
../gcc-4.9.4/configure --prefix=/usr/local/gcc-4.9.4/ --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j4
make install
设置环境变量
优先使用指定版本的GCC,可将下行代码添加到*~/.bash_profile*
export PATH=/usr/local/gcc-4.9.4/bin:$PATH
配置libstdc++.so.6
在gcc编译目录下找到最新的libstdc++.so
,拷贝至/usr/lib64/
,运行命令ldconfig
$ ll /usr/lib64/libstdc++.so.6
lrwxrwxrwx. 1 root root 19 Nov 20 15:59 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.13
$ find build-gcc-4.9.4/ -name libstdc++.so.* |xargs ls -l
lrwxrwxrwx. 1 root root 19 Aug 30 2016 build-gcc-4.9.4/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 -> libstdc++.so.6.0.20
-rwxr-xr-x. 1 root root 6781772 Aug 30 2016 build-gcc-4.9.4/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20
lrwxrwxrwx. 1 root root 19 Aug 30 2016 build-gcc-4.9.4/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 -> libstdc++.so.6.0.20
-rwxr-xr-x. 1 root root 6781772 Aug 30 2016 build-gcc-4.9.4/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20
lrwxrwxrwx. 1 root root 19 Aug 30 2016 build-gcc-4.9.4/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 -> libstdc++.so.6.0.20
-rwxr-xr-x. 1 root root 6781772 Aug 30 2016 build-gcc-4.9.4/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20
$ cp build-gcc-4.9.4/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.20 /usr/lib64/
$ ldconfig
$ ll /usr/lib64/libstdc++.so.6
lrwxrwxrwx. 1 root root 19 Nov 20 16:12 /usr/lib64/libstdc++.so.6 -> libstdc++.so.6.0.20
好了,开车上路吧!
参考资料