本文转载自:https://www.cnblogs.com/uestc-mm/p/7511063.html

这几天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本太高等问题,由此我打算安装其他老的版本给我的Ubuntu16.04.实验过程如下:

官网的教程是最牛逼的,先看看官网的安装教程吧:https://gcc.gnu.org/install/

1、首先查看一下当前我的Ubuntu16.04版本的原装GCC版本:

gcc -v #查看gcc的版本
g++ -v #查看g++的版本

  

如上图所示:GCC的版本是5.4.0(这对我编译某些很早的内核文件的确是太新了)

2、安装目前需要GCC和G++的版本(目前安装的是gcc-4.8.5版本):

在这之前,我尝试采用下载源文件编译安装的方法,碰到了太多的问题,先记录于此,后面再解决吧,先使用apt-get的安装方法:

sudo apt-get install gcc-4.8 g++-4.8

我已经安装好了,显示如图。

你在安装完之后可以采用下面的指令来查看当前系统中安装的所有的gcc和g++的版本:

ls /usr/bin/gcc*
ls /usr/bin/g++*

3、将某个版本加入gcc候选中,最后的数字是优先级,我自己是直接设为100(测试没有问题),指令如下:

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

同样的我们也将原来系统中的gcc和g++的优先级改成100,这样我们就能在选择完当前使用版本之后不会恢复默认优先级的版本。

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

4、完成上面的操作之后,我们就可以通过下面的指令来选择不同的gcc和g++的版本了,(注意使用之前确保至少有两个gcc或者g++的版本进行了第3步的操作):

sudo update-alternatives --config gcc

这里我们选择了2,也就是gcc-4.8的版本,接下来查看当前的版本是否已经切换过来了。

gcc -v

这样表示确实切换过来了。

我们可以使用同样的方法来选择g++:

OK,我们都切换过来了,cheers!。

注意一个问题:

  当切换使用了其他版本的gcc时,请务必保持g++的版本和gcc版本的一致性,否则用cmake配置出来的项目遇到c++代码还是会用之前版本的gcc。

关于直接编译安装gcc的教程可以参看这里(虽然我还没成功):http://blog.csdn.net/ws_20100/article/details/51207372

关于上面的gcc的切换和安装也可以参考这里:http://www.linuxidc.com/Linux/2017-03/142299.htm

后续问题解决:

由于不能很好的使用source源文件来安装gcc,那我们就想办法安装:采用.deb文件来安装

1、先下载rpm的安装文件。

wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic//gcc3.4-3.4.5-alt17.x86_64.rpm

2、将rpm文件转换成ubuntu能够识别的deb文件。

下载转换安装文件的软件alien:

sudo apt-get install alien

3、转换rpm到deb文件(在同一目录下生成了deb文件)。

sudo alien gcc3.4-3.4.5-alt17.x86_64.rpm

4、使用指令安装deb软件包。

sudo dpkg -i gcc3.4_3.4.5-1_amd64.deb 

5、查看当前所有的gcc版本。

ls /usr/bin/gcc*

最后安装好了们就用之前的命令来设置gcc的优先级,并切换不同的gcc的版本啦~

参考reference:

gcc专用rpm文件下载地址:https://pkgs.org/

rpm转deb文件:http://blog.csdn.net/cd520yy/article/details/10475843

ubuntu 安装gcc-3.4.6:http://aizhu.2008beijing.blog.163.com/blog/static/5845702120121194563260/

                                         完~

感谢GISPALAB实验室的老师和同学们的帮助和支持~

Ubuntu16.04多个版本GCC编译器的安装和切换【转】的更多相关文章

  1. Ubuntu16.04多个版本GCC编译器的安装和切换

    这几天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本太高等问题,由此我打算安装其他老的版本给我的Ubuntu16.04.实验过程如下: 官网的教程是最牛逼的,先 ...

  2. Ubuntu18.04多个版本GCC编译器的切换

    今天make一个程序的时候,发现程序里面使用到了C++17的标准,而我的gcc仍然是4.8,考虑到系统是ubuntu18.04的,所以感觉应该gcc的版本不会这么低. cd到/usr/bin下,使用指 ...

  3. ubuntu16.04降级内核版本至3.13.0-85

    1.前言 采用ubuntu16.04在编译实验课程的实例代码simplefs 时,发现编译时报如下错误: 因此需要将ubuntu16.04的内核版本降级为 3.13.0-85-generic 2.修改 ...

  4. Ubuntu16.04下Neo4j图数据库官网安装部署步骤(图文详解)(博主推荐)

    不多说,直接上干货! 说在前面的话  首先,查看下你的操作系统的版本. root@zhouls-virtual-machine:~# cat /etc/issue Ubuntu LTS \n \l r ...

  5. Ubuntu16.04下caffe CPU版的详细安装步骤

    一.caffe简介 Caffe,是一个兼具表达性.速度和思维模块化的深度学习框架. 由伯克利人工智能研究小组和伯克利视觉和学习中心开发. 虽然其内核是用C++编写的,但Caffe有Python和Mat ...

  6. GCC编译器的安装

    1.GCC简介 GCC(GNU Compiler Collection)是一套功能强大.性能优越的编程语言编译器,它是GNU计划的代表作品之一.GCC是Linux平台下最常用的编译器,GCC原名为GN ...

  7. Ubuntu16.04系统Python3相关环境或模块安装

    前提:一般用户安装都命令前都需要sudo ,或者在root用户下 1.Ubuntu 16.04 安装PyCharm Ubuntu 16.04 安装PyCharm 本文通过第三方源安装PyCharm,好 ...

  8. linux应用之gcc编译器的安装及使用

    gcc是linux系统下功能十分强大的编译器. 本人使用的是CentOS 6.6 64位系统,由于在安装系统的时候并没有勾选安装gcc编译器,因此需要自行安装gcc编译器. 使用yum安装gcc 对于 ...

  9. Ubuntu16.04 + cuda9.0 + cudnn7.1.4 + tensorflow安装

    安装前的准备 UEFI 启动GPT分区 Win10和Ubuntu16.04双系统安装 ubuntu16.04 NVIDIA 驱动安装 ubuntu16.04 NVIDIA CUDA8.0 以及cuDN ...

随机推荐

  1. 简单安装与配置mysql数据库(绿色版)

    目录 绿色版下载 mysql绿色版(5.7版本的安装与配置) 绿色版下载: mysql官网下载地址:https://www.oracle.com/index.html mysql绿色版(5.7版本的安 ...

  2. Chrome cookies folder

    w本地存储数据2种形式. http://superuser.com/questions/292952/chrome-cookies-folder-in-windows-7 chrome://setti ...

  3. time-based DB

    这类时间序列数据库最多,使用也最广泛.一般人们谈论时间序列数据库的时候指代的就是这一类存储.按照底层技术不同可以划分为三类. 直接基于文件的简单存储:RRD Tool,Graphite Whisper ...

  4. postfix邮箱服务器修改附件大小限制遇到的问题与解决

    Q1:邮件大小限制为30M,发送的附件大小为25M,发送后提示邮件大小超过限制 A:邮箱客户端在发送邮件时会把附件进行base64转码,转码之后邮件大小会超过附件+正文的大小,所以10M的附件在经过转 ...

  5. centos下vsftpd不能显示文件,不能创建文件及文件夹

    centos下vsftpd登录正常,但不能显示文件,不能创建文件及文件夹 这是由于selinux的机制 通过命令 [root@localhost www]# getsebool -a|grep ftp ...

  6. 剑指Offer——链表中环的入口结点

    题目描述: 一个链表中包含环,请找出该链表的环的入口结点. 分析: 设置两个指针p1,p2, 两个指针都从链表的头部开始走,不过p1每次走一步,p2每次走两步. 直到相遇的时候,p2走的长度是p1的两 ...

  7. Linux命令:tac

    全称:concatenate and print files in reverse 用途:将文件全部内容从尾到头反向连续输出到标准输出(屏幕)上 格式:tac [OPTION]... [FILE].. ...

  8. 出现 Request Entity Too Large问题的解决方法

    根据经验判断应该是上传文件大小被限制了,检查了应用配置是10M,把它设置成100M,重启服务也不能解决问题. 原来我们的tomcat是通过nginx发现服务代理的,问题就出现nginx服务器上,原来n ...

  9. spring Bean装配的几种方式简单介绍

    Spring容器负责创建应用程序中的bean同时通过ID来协调这些对象之间的关系.作为开发人员,我们需要告诉Spring要创建哪些bean并且如何将其装配到一起. spring中bean装配有两种方式 ...

  10. 推荐系统第6周--- SVD和基于标签的推荐系统

    “隐语义”的真正背景       LSA(latent semantic analysis)潜在语义分析,也被称为LSI(latent semantic index),是Scott Deerweste ...