Ubuntu已经内置了gcc的安装。但在很多时候,由于需要特定版本的gcc,那么需要自己安装。
但是在安装gcc4.9的时候,自动安装了最新的版本,而我想要用4.9.2版本来进行编译和验证,却无法安装上,只好自己进行源码的编译。
1、下载
从这里http://ftp.gnu.org/gnu 可以下载最新的gcc版本,还需要同时下载gmp/mpc/mpfr,注意一定要是对应的版本,保险起见,选择gcc编译式提示的最低版本即可,版本太高有可能引起其它的问题。
使用gcc源码目录下的.
/contrib/download_prerequisites进行下载,可保证版本的一致性,推荐使用。
2、编译
采用下面的步骤进行编译:
tar -vxf gcc-4.9.3.tar.bz2
cd gcc-4.9.3
./contrib/download_prerequisites
#脚本自己主动下载依赖包 gmp, mpfr,mpc。
#也能够手动下载然后移到/gcc-4.9.0文件夹以下自己主动一起安装,或者自行先编译安装
./configure
sudo make install
编译完了后,使用gcc -v检查一下安装的版本。
2.1 在独立的目录中编译
运行configure命令,产生makefile。
先创建build文件夹,编译到此文件夹下:
mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
2.2 多线程编译
gcc的编译时间比较长,在多核机器可以启用多线程。虚拟机中,建议预先增加CPU的数量与线程数一致。
make -j4
4表示线程数,时间比較长,用多个线程更快
3、安装
sudo make install
如果以前编译过,部分链接库缓存可能版本较老。为了清除以前的遗留文件,可以先运行make clean。
4、使用
如果需要在多个gcc版本间切换,参考:http://my.oschina.net/u/2306127/blog/538139
但是,这种方法只能切换gcc编译器,所涉及到的引用库如libgomp等不会切换,导致出现undefined symbol之类的错误。
在Ubuntu14.04,缺省编译的gcc位于/usr/local/lib64目录下,通过设定载入库的目录即可解决这个问题:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64
如果放在启动的sh脚本中,该设置只在当前运行环境下有效,从而可以避免其他程序之间的相互干扰。