对 gcc或g++ 升级无法直接使用:
1 | yum update gcc |
以下是升级的详细过程。
1.使用 redhat developer toolset 2 的repo,安装GCC
1 | cd /etc/yum.repos.d |
2. 替换系统中原来的GCC
通过通过第一步会把 GCC 安装到以下目录:
1 | /opt/rh/devtoolset-2/root/usr/bin/ |
接下来需要修改系统的配置,使默认的 gcc 和 g++ 命令使用的是新安装的版本。
1 | ln -s /opt/rh/devtoolset-2/root/usr/bin/* /usr/local/bin/ |
现在查看 g++ 的版本号:
1 | g++ --version |
g++版本升级到4.8.2了。
3. 副作用
gcc 4.8生成“rep;ret”指令,避免AMD芯片的性能损失,而老版的assemblers会识别为错误,
解决方法是更新binutils,使用更新的assemblers接受此指令。参考:https://gcc.gnu.org/ml/gcc-help/2011-03/msg00286.html
1 | yum install -y devtoolset-2-binutils-devel |
更优雅的方式
centos为了稳定性,发行版的软件版本通常都比较低,为了解决用户使用软件不同版本的需求,RedHat 推出 Software Collections,更多说明可自行谷歌。
解决上述更新gcc版本,可以使用 devtoolset + scl
, devtoolset不同的版本内置了不同版本的gcc等多个软件包,devtoolset-3使用的是gcc4.9.2的版本。
安装scl支持: yum install scl-utils
例如在bash命令中更新使用的gcc,如scl enable devtoolset-3 bash
, 这点和python的venv很类似。如果只是一次性使用,可以使用以下命令:scl enable devtoolset-3 "gcc --version"