你好,游客 登录 注册 搜索
背景:
阅读新闻

Ubuntu 16.04 LTS 降级安装GCC 4.8

[日期:2017-03-28] 来源:博客园  作者:in4ight [字体: ]

由于gcc在5.x版本修改了ABI,导致新版本gcc编译的二进制文件放在老的环境下会报错,所以需要安装gcc4.8.5。4.8.5这个版本支持c++11。

首先尝试下载gcc-4.8.5的源码编译安装,结果make时报错“libstdc++.so.6: : version `CXXABI_1.3.8' not found”。查了一下,不能用新版gcc来编译老版的gcc源码。

其实,在Ubuntu 16.04上安装老版gcc十分简单,直接用apt-get命令下载即可。

第一步:

sudo apt-get install gcc-4.8

输入密码,同意安装,接下来就自动下载安装4.8.5版本了。

第二步:设置默认的gcc版本

gcc --version

(可选)查看当前版本,不出意外的话会返回Ubuntu 16.04自带的5.4.0这个版本号,现在使用gcc命令编译时还是会用新版本。

ls /usr/bin/gcc*

(可选)查看已有的gcc版本,确认一下刚才4.8.5有没有装成功。

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 
100

将某个版本加入gcc候选中,最后的数字是优先级,我自己是直接设为100,没任何问题。

接着输入:

sudo update-alternatives --config gcc

如果用过此方法配置过多个gcc版本,会看到如下选项:(注:复制于参考文献【1】,这里只是做个说明示范,实际装4.8时不会如下显示)

选择                  路径            优先级        状态
------------------------------------------------------------
* 0            /usr/bin/gcc-4.4  50        自动模式
 
1            /usr/bin/gcc-4.4  50        手动模式
 
2            /usr/bin/gcc-4.5  40        手动模式
 
3            /usr/bin/gcc-4.6  30        手动模式

大多数情况是没有这么配置过,所以不会给选项,命令行会返回“仅有一个可用的gcc版本”(大意)。此时在运行gcc --version查看版本,发现4.8.5已经为默认的gcc版本。

然后再按同样方法装上g++,如果只装gcc的话,用cmake配置出来的项目遇到c++代码还是会用之前版本的gcc。

大功告成。

参考文献:

【1】http://www.linuxidc.com/Linux/2012-10/72284.htm

Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)  http://www.linuxidc.com/Linux/2014-04/99583.htm 

Ubuntu 14.04 LST安装GCC 4.1.2  http://www.linuxidc.com/Linux/2016-06/132040.htm

Ubuntu下Vim+GCC+GDB安装及使用 http://www.linuxidc.com/Linux/2013-01/78159.htm 

Ubuntu下两个GCC版本切换 http://www.linuxidc.com/Linux/2012-10/72284.htm 

CentOS6.5升级手动安装GCC4.8.2  http://www.linuxidc.com/Linux/2015-01/112595.htm 

Ubuntu升级GCC版本 http://www.linuxidc.com/Linux/2016-11/136840.htm

GCC 的详细介绍请点这里

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

本文永久更新链接地址http://www.linuxidc.com/Linux/2017-03/142299.htm

linux
相关资讯       GCC安装 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款