基础知识
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像我们这种平民一般都没用过。
更新:g77和libg2c0-dev这两个不要安装,安装了会导致Ubuntu出现依赖缺失问题
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
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阶段会出问题。
Ubuntu操作不熟悉,好累😩,禁止搬运,否则追究。