利用 scl 为 CentOS 升级 gcc 版本
(一)背景
在搞 dpvs 期间遇到的一个问题,在编译 dpdk 程序时会根据所在服务器的 cpu 所拥有的指令集,为了尽可能提高程序效率,将较新的 cpu 指令集编译到 dpdk 程序中。这样导致的一个问题就是,编译打包好的 dpdk 程序部署到 cpu 架构较老的服务器上就无法运行。
当时采用的方法就是,在编译时将 cpu 架构指定为现有服务器中架构较老的型号,可以通过加参数 -march=ivybridge
来实现。
不过 CentOS7 默认的 gcc 版本 4.8.5
太低,不支持类似的参数语法,需要升级较高版本的 gcc
(二)通过 scl 升级 gcc
首先,安装 scl 相关的 yum 源
$ yum install centos-release-scl scl-utils-build
安装 devtoolset 工具集,功能之一就是提供了 gcc
$ yum install devtoolset-4-gcc.x86_64 \
devtoolset-4-gcc-c++.x86_64 \
devtoolset-4-gcc-gdb-plugin.x86_64
在生效前可以看到系统 gcc 默认版本
$ gcc -v
4.8.5
设置 scl 版本的 gcc 生效
$ scl enable devtoolset-4 bash