一般的Linux都是企业应用相对的发行版的软件包相对较旧,而现在C++11逐渐普及,支持C++11的编译器在Linux上的GCC稍微完整点的都至少是4.8版本,反观CentOS 6的GCC版本为4.4,即使是最新的CentOS 7也才仅为4.7。因此很多时候需要升级系统自带的编译器(注意,千万不要从高版本的Linux上GCC编译的程序拿到低版本的服务器上来,因为GLIBC不支持,也不能直接替换)。
源码编译升级
一般来讲,Linux下大多数软件都是编译安装的,有了仓库之后安装就变的简单了,但是我们需要升级的就是默认仓库下的软件,比如我们升级到4.9版本去。一般的办法就是通过下载源码,解决依赖,编译等。这个方法我们测试使用过,但是好像在字符编码转换方面好像是存在问题的。具体编译方法可自行百度。
在线仓库安装
其实软件仓库里面是有更高版本的GCC的,只是一般没有配置而已,而且是准备了好多个版本,叫 devtoolset
因此会有如 devtoolset-3
对应4.9.2版本,devtoolset-6
对应6.3.1版本等等,现在最新的最高版本是7了,对应的是GCC的7版本,想要在线安装,简单的处理办法是在repo文件中添加,比如我的阿里云服务器使用的是CentOS的6版本(7版本类似),编辑 /etc/yum.repo.d/CentOS-Base.repo
在最后添加
[centos-sclo-rh] |
添加完成之后,就可以安装软件了,一般安装GCC和G++就可以了,查看网页发现软件也不多,因此我安装了6版本的所有软件,因为这样GDB等都可以使用
yum update |
升级完成之后,软件安装到了 /opt/rh
目录,要使用高版本的时候,更新环境变量即可
source /opt/rh/devtoolset-6/enable |
本来想安装的是4.9.2版本的,无奈安装 devtoolset-3
在服务端是有相应的软件的,但是YUM却不能扫到,不知道为何。
另:网络上有通过YUM方式安装仓库的方式来在线安装,原理是一样的,结果应该也是一样的,如下
yum install centos-release-scl-rh centos-release-scl |
相应的会在 /etc/yum.repo.d/
目录下生成两个repo文件。