亚马逊EC2自带的g++是4.8,比较老的版本,许多新的代码都编译不了。因此需要升级g++。
升级方法如下:
1、安装依赖
sudo yum install libmpc-devel mpfr-devel gmp-devel
2、获得源码
以获得5.4.0的源码为例
cd /tmp
curl -o "gcc-5.4.0.tar.gz" https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
tar -xvzf gcc-5.4.0.tar.gz
如果你想获得其他版本,可以去这个网站https://ftp.gnu.org/gnu/gcc查看,然后修改版本号就行,比如将5.4.0修改为5.5.0
3、配置和编译
./configure --with-system-zlib --disable-multilib --enable-languages=c,c++
make -j8
4、安装
sudo make install
上面就是安装完成了,可以使用
g++ -v
查看当前使用的g++版本,如果没有变成你想要的版本,那是因为软链接的问题。
首先使用
which g++
查看当前使用g++的具体路径,很有可能给出的路径是/usr/bin/g++
实际上,你刚刚安装的g++是在/usr/local/bin
中的,而使用ll /usr/bin/g++
会发现这是个软链接,并且指向的位置并不是咱们刚刚安装的g++,所以我们只要将这个软件删除,重新建一个指向咱们新安装的g++即可。具体:
cd /usr/bin
sudo rm g++
ln -s /usr/local/bin/g++ g++
此时再使用g++ -v
就发现使用的是咱们刚刚安装的版本了。
同样的,使用相同的方法修改gcc。