基礎知識
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操作不熟悉,好累😩,禁止搬運,否則追究。
