首頁 > 軟體

Ubuntu 18.04 下搭建 C/C++編譯開發環境及GCC多版本切換

2020-06-16 16:37:03

本文詳細記錄在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++環境的搭建,對於從編譯到執行的過程可以通過指令碼來一步到位執行。


IT145.com E-mail:sddin#qq.com