作为一个刚刚接触linux的小菜鸡,前一段时间挑战了一下自我,试了试在centos6.5系统下安装ycm,这款号称史上最难的vim插件,很明显我这个小菜鸟是完全搞不定的,只能堪堪的把ycm编译过而已,离能用还差的远...... 虽然没能成功的安装好ycm,但还是有一些东西可以分享给跟我一样linux菜鸟。




1.升级gcc至7.2.0

获取root权限

后面有的地方需要这个权限,避免麻烦一次获取,平时尽量避免在root下乱玩,容易出事...

当然虚拟机或者机器仅自己用的话随意。

[ljh@localhost ~]$ su


这里键入密码是不显示任何东西的,输完密码直接回车就好(新手向攻略......)

Password:


查看当前gcc版本

[root@localhost ljh]# gcc -v



可以发现centos6.5自带的是4.4.7版本,这个版本不支持c++11


要下就下最新的,目前最新版为7.2.0


好奇的同学也可以去http://ftp.gnu.org/gnu/gcc这个网址选择自己喜欢的版本

[root@localhost ljh]# wget http://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.gz

tar.gz后缀的用-zxvf解压,如果你选择的版本是tar.bz2后缀用-jxvf解压

对了这条指令敲到gcc的时候同时按住alt+/可以自动补全,下面的很多指令都可以(主要是为了帮助和我一样的菜鸟)

[root@localhost ljh]# tar -zxvf gcc-7.2.0.tar.gz

进入gcc-7.2.0的文件夹

[root@localhost ljh]# cd gcc-7.2.0


这一步是下载了三个依赖环境gmp,mpc,mprf


有兴趣的同学可以看看http://ayuepm.blog.51cto.com/8738658/1382240这篇博客

[root@localhost ljh]# ./contrib/download_prerequisites

创建一个文件夹放编译出来的文件

[root@localhost gcc-7.2.0]# mkdir gcc-build-7.2.0
[root@localhost gcc-7.2.0]# cd gcc-build-7.2.0/

生成Makefile文件,如果有同学需要gcc支持java之类的语言,移步上面的链接,用里面给出的configure代替本句

[root@localhost gcc-build-7.2.0]# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

编译

由于我用的是虚拟机且只分配了一个核心,所以这一步直接使用了make,对于多核处理器本步可加 -j4选项加快编译速度(很慢)

[root@localhost gcc-build-7.2.0]# make


编译到一半的时候报错了,错误如下

make[2]: *** [configure-stage1-gcc] Error 1
make[2]: Leaving directory `/home/ljh/gcc-7.2.0/gcc-build-7.2.0'
make[1]: *** [stage1-bubble] Error 2
make[1]: Leaving directory `/home/ljh/gcc-7.2.0/gcc-build-7.2.0'
make: *** [all] Error 2


如果你也遇到了,莫慌,键入下面的指令

[root@localhost gcc-build-7.2.0]# yum install gcc-c++


遇到yes or on的话当然是yes了.然后继续编译

[root@localhost gcc-build-7.2.0]# make


查看gcc版本

[root@localhost gcc-build-7.2.0]# gcc -v


版本为7.2.0,这个时候基本就已经大功告成了,唯一的问题就是现在的动态库还是旧的需要更新

进入lib目录,如果是64位的centos应该进入的时lib64目录

[root@localhost gcc-build-7.2.0]# cd /usr/lib


查看一下现在动态库版本

[root@localhost lib]# strings /usr/lib/libstdc++.so.6 | grep GLIBC


发现里面GLIBCXX_3.4.13是最高的

[root@localhost lib]# rm -rf libstdc++.so.6
[root@localhost lib]# cp /usr/local/lib/libstdc++.so.6 ./


再次查看动态库版本

[root@localhost lib]# strings /usr/lib/libstdc++.so.6 | grep GLIBC


这时已经有了GLIBCXX_3.4.24

至此高版本gcc就安装完成了



文章摘抄于,做了一些个人补充,解决了一个原文中没有的错误,简化了更正动态库的步骤。