2021-05-12 14:32:11
Ubuntu 18.04 下搭建 C/C++編譯開發環境及GCC多版本切換
本文詳細記錄在Ubuntu 18.04.2 下搭建 C/C++編譯開發環境的步驟,Ubuntu 18.04.2預裝GCC版本為7.4,但有時在編譯是需要用的不同gcc版本,下面就介紹如何安裝不同的gcc 和g++版本,並設定根據不同的需要在不同版本之間切換。
1. 環境準備
首先需要安裝gcc和g++環境
安裝之前檢視是否有安裝,使用命令:
gcc --version
g++ --version
Ubuntu 18.04中gcc與g++預設安裝的是7.4.0版本。
你也可以使用以下命令安裝其他版本的gcc與g++:
# 版本安裝:這裡選擇的式版本8
linuxidc@linuxidc:~/linuxidc.com$ sudo apt install gcc-8
[sudo] linuxidc 的密碼:
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
將會同時安裝下列軟體:
cpp-8 libasan5 libgcc-8-dev libubsan1
建議安裝:
gcc-8-locales gcc-8-multilib gcc-8-doc libgcc1-dbg libgomp1-dbg libitm1-dbg
libatomic1-dbg libasan5-dbg liblsan0-dbg libtsan0-dbg libubsan1-dbg
libmpx2-dbg libquadmath0-dbg
下列【新】軟體包將被安裝:
cpp-8 gcc-8 libasan5 libgcc-8-dev libubsan1
升級了 0 個軟體包,新安裝了 5 個軟體包,要解除安裝 0 個軟體包,有 185 個軟體包未被升級。
需要下載 21.5 MB 的歸檔。
解壓縮後會消耗 71.4 MB 的額外空間。
您希望繼續執行嗎? [Y/n] Y
linuxidc@linuxidc:~/linuxidc.com$ sudo apt install g++-8
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
將會同時安裝下列軟體:
libstdc++-8-dev
建議安裝:
g++-8-multilib gcc-8-doc libstdc++6-8-dbg libstdc++-8-doc
下列【新】軟體包將被安裝:
g++-8 libstdc++-8-dev
升級了 0 個軟體包,新安裝了 2 個軟體包,要解除安裝 0 個軟體包,有 185 個軟體包未被升級。
需要下載 11.6 MB 的歸檔。
解壓縮後會消耗 45.2 MB 的額外空間。
您希望繼續執行嗎? [Y/n] Y
# 版本安裝:這裡選擇的式版本5
linuxidc@linuxidc:~/linuxidc.com$ sudo apt-get install gcc-5
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
將會同時安裝下列軟體:
cpp-5 gcc-5-base libasan2 libgcc-5-dev libisl15 libmpx0
建議安裝:
gcc-5-locales gcc-5-multilib gcc-5-doc libgcc1-dbg libgomp1-dbg libitm1-dbg
libatomic1-dbg libasan2-dbg liblsan0-dbg libtsan0-dbg libubsan0-dbg
libcilkrts5-dbg libmpx0-dbg libquadmath0-dbg
下列【新】軟體包將被安裝:
cpp-5 gcc-5 gcc-5-base libasan2 libgcc-5-dev libisl15 libmpx0
升級了 0 個軟體包,新安裝了 7 個軟體包,要解除安裝 0 個軟體包,有 185 個軟體包未被升級。
需要下載 19.2 MB 的歸檔。
解壓縮後會消耗 61.5 MB 的額外空間。
您希望繼續執行嗎? [Y/n] Y
linuxidc@linuxidc:~/linuxidc.com$ sudo apt-get install g++-5
正在讀取軟體包列表... 完成
正在分析軟體包的依賴關係樹
正在讀取狀態資訊... 完成
將會同時安裝下列軟體:
libstdc++-5-dev
建議安裝:
g++-5-multilib gcc-5-doc libstdc++6-5-dbg libstdc++-5-doc
下列【新】軟體包將被安裝:
g++-5 libstdc++-5-dev
升級了 0 個軟體包,新安裝了 2 個軟體包,要解除安裝 0 個軟體包,有 185 個軟體包未被升級。
需要下載 9,864 kB 的歸檔。
解壓縮後會消耗 38.6 MB 的額外空間。
您希望繼續執行嗎? [Y/n] y
現在檢視已安裝gcc版本
linuxidc@linuxidc:~/linuxidc.com$ ls /usr/bin/gcc*
/usr/bin/gcc /usr/bin/gcc-ar /usr/bin/gcc-nm /usr/bin/gcc-ranlib
/usr/bin/gcc-5 /usr/bin/gcc-ar-5 /usr/bin/gcc-nm-5 /usr/bin/gcc-ranlib-5
/usr/bin/gcc-7 /usr/bin/gcc-ar-7 /usr/bin/gcc-nm-7 /usr/bin/gcc-ranlib-7
/usr/bin/gcc-8 /usr/bin/gcc-ar-8 /usr/bin/gcc-nm-8 /usr/bin/gcc-ranlib-8
update-alternatives是ubuntu系統中專門維護系統命令連結符的工具,通過它可以很方便的設定系統預設使用哪個命令、哪個軟體版本。
其中40 ,50 ,70是優先順序數值可以自己設定,--slave能保證gcc和g++保持相同的版本。
設定優先順序
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 30
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 40
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 30
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 40
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50
接著檢視
選擇gcc版本
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --config gcc
有 3 個候選項可用於替換 gcc (提供 /usr/bin/gcc)。
選擇 路徑 優先順序 狀態
------------------------------------------------------------
0 /usr/bin/gcc-5 50 自動模式
1 /usr/bin/gcc-5 50 手動模式
2 /usr/bin/gcc-7 40 手動模式
* 3 /usr/bin/gcc-8 30 手動模式
要維持當前值[*]請按<確認鍵>,或者鍵入選擇的編號:
現在預設為gcc8
選擇g++版本
linuxidc@linuxidc:~/linuxidc.com$ sudo update-alternatives --config g++
有 3 個候選項可用於替換 g++ (提供 /usr/bin/g++)。
選擇 路徑 優先順序 狀態
------------------------------------------------------------
* 0 /usr/bin/g++-5 50 自動模式
1 /usr/bin/g++-5 50 手動模式
2 /usr/bin/g++-7 40 手動模式
3 /usr/bin/g++-8 30 手動模式
要維持當前值[*]請按<確認鍵>,或者鍵入選擇的編號:3
update-alternatives: 使用 /usr/bin/g++-8 來在手動模式中提供 /usr/bin/g++ (g++)
安裝後檢視版本,如下圖所示:
linuxidc@linuxidc:~/linuxidc.com$ gcc --version
gcc (Ubuntu 8.3.0-6ubuntu1~18.04) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
linuxidc@linuxidc:~/linuxidc.com$ g++ --version
g++ (Ubuntu 8.3.0-6ubuntu1~18.04) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2. 編寫C原始碼
可以通過任何文字編輯器建立一個.cpp的檔案.在這裡用建立一個linuxidc.com.cpp檔案,並儲存在一個檔案中,測試的程式碼為:
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, Linux公社 www.linuxidc.com" << endl;
return 0;
}
3. 程式碼編譯
開啟終端使用如下命令進行編譯:
// 命令格式:g++ 檔名
g++ linuxidc.com.cpp
注意:這裡的檔名其實是包含檔案路徑的。要是不知道檔案路徑的話可以在敲完g++加上空格之後直接把檔案拖進去,系統會自動新增檔案路徑。預設的輸出位置是“主資料夾”,預設輸出檔案是a.out。可以使用以下格式指定輸出的檔名:
g++ 檔名 -o 輸出檔名
比如g++ linuxidc.com.cpp -o linuxidc.com
輸出的路徑仍然是預設路徑,檔名應是*.out的格式。這裡要注意的是使用-o命令必須指定輸出檔名,否則會報錯:g++: argument to ‘-o’ missing。
對於g++的命令使用,可以通過:man g++命令檢視
4. 執行並輸出結果
通過以上編譯得到*.out檔案以後,你也可以直接把這個檔案拖到Terminal上,通過按確認鍵執行,如圖所示:
到這裡就完成了Ubuntu 18.04下 C/C++環境的搭建,對於從編譯到執行的過程可以通過指令碼來一步到位執行。
相關文章