Ubuntu18.04将高版本gcc7.5降低为低版本gcc3.4
基础知识
dpkg
“dpkg ”是“Debian Packager ”的简写。为 “Debian” 专门开发的套件管理系统,方便软件的安装、更新及移除。所有源自“Debian”的“Linux ”发行版都使用 “dpkg”,例如 “Ubuntu”、“Knoppix ”等。
gcc与g++
gcc: GNU C Compiler
g++: GNU C++ Compiler
二者均属于the GNU Compiler Collection,先有的gcc后来才有g++。
一般都不怎么区分二者,大部分认为g++就是编译c++的,gcc就是编译c的。但是它们之间的区别还是不能忽视,在编译项目的时候不能盲目的使用g++,区别如下
- g++可以自动链接C++标准库,如C++内的string、vector
- gcc可以根据文件后缀自动识别是C还是C++文件(似乎没什么作用)
- gcc编译C文件要比gcc编译C++文件有更少的宏定义(gcc可以编译C++,需要在后面加上-lstdc++,作用是链接C++库)
Debian
deb是Debian软件包格式的文件扩展名,Ubuntu和Debian都是最具影响力的Linux发行版。Debian比较适合服务器,非常的稳定。Ubuntu也很稳定,但是拥有比较丰富的桌面软件,更符合桌面操作系统的概念。Ubuntu可以说是来自Debian,但是也具有很大的区别。
环境准备
我的Ubuntu内已经有了7.5版本的gcc和g++,由于操作系统课设需要gcc3.4的环境,我不得不再安装一个gcc3.4。同时我也不想卸载原来的gcc7.5,只有让它们共存才行。下图为目前的gcc和g++版本:
gcc多版本共存
1.下载gcc3.4的deb软件包
打开deb软件包的地址之后,找到下图所示的几个文件并下载,注意一定不要下载错了文件。后缀amd64的含义是64位系统,i386的含义是32位系统,ia64像我们这种平民一般都没用过。
2.安装gcc3.4的deb软件包
sudo dpkg --force-depends -i gcc-3.4-base_3.4.6-6ubuntu3_amd64.deb
sudo dpkg --force-depends -i gcc-3.4_3.4.6-6ubuntu3_amd64.deb
sudo dpkg --force-depends -i cpp-3.4_3.4.6-6ubuntu3_amd64.deb
sudo dpkg --force-depends -i g++-3.4_3.4.6-6ubuntu3_amd64.deb
sudo dpkg --force-depends -i libstdc++6-dev_3.4.6-6ubuntu3_amd64.deb
sudo dpkg --force-depends -i g77-3.4_3.4.6-6ubuntu3_amd64.deb
sudo dpkg --force-depends -i libg2c0-dev_3.4.6-6ubuntu3_amd64.deb
3.检查gcc3.4的安装情况
3.1检查gcc
ls /usr/bin/gcc* -ll
如果出现gcc3.4则表示安装成功
3.2检查g++
ls /usr/bin/g++* -ll
如果出现g++3.4则表示安装成功
4.设置新旧版本gcc的优先级
- 设置gcc3.4的优先级为30,gcc7的优先级为70,优先级可随意设定,根据我的习惯就这样设置。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.4 30
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70
- 设置g++3.4的优先级为30,g++7的优先级为70
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-3.4 30
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 70
5.切换gcc版本
5.1切换gcc版本为3.4
sudo update-alternatives --config gcc
5.2切换g++版本为3.4
sudo update-alternatives --config g++
6.检查gcc版本
总结
gcc和g++版本最好保持一致,要不然可能在以后编译make阶段会出问题。
原文地址:https://www.cnblogs.com/mirage-mc/p/12681366.html
Ubuntu操作不熟悉,好累
- 【C】用C语言提取bmp图片像素,并进行K-means聚类分析——容易遇到的问题
- SEED缓冲区溢出实验笔记
- HTTP严格安全传输(HTTP Strict Transport Security, HSTS)chromuim实现源码分析(一)
- Linux下ls命令显示符号链接权限为777的探索
- Django form表单
- Django ORM那些相关操作
- 使用mitmproxy嗅探双向认证ssl链接——嗅探AWS IoT SDK的mqtts
- Django中ORM介绍和字段及其参数
- 几个实现分页的方法
- 如何识别IDA反汇编中动态链接库中的函数
- Kali Linux安装TL-WN821N USB无线网卡驱动(make失败)
- Cookie、Session登陆验证相关介绍和用法
- 题型分析
- .NET CORE 框架ABP的代码生成器(ABP Code Power Tools )使用说明文档
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法