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像我們這種平民一般都沒用過。

更新: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操作不熟悉,好累😩,禁止搬運,否則追究。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM