天天看點

gcc安裝及使用GCC

GCC

GCC簡介

  • 早期 GCC 的全拼為 GNU C Compiler,即 GUN 計劃誕生的 C 語言編譯器,顯然最初 GCC 的定位确實隻用于編譯 C 語言。但經過這些年不斷的疊代,GCC 的功能得到了很大的擴充,它不僅可以用來編譯 C 語言程式,還可以處理 C++、Go、Objective -C 等多種編譯語言編寫的程式。與此同時,由于之前的 GNU C Compiler 已經無法完美诠釋 GCC 的含義,是以其英文全稱被重新定義為 GNU Compiler Collection,即 GNU 編譯器套件。

GCC在Linux的安裝

檢視目前GCC的版本

  • 指令:

    gcc --version

    或者

    gcc -v

    gcc安裝及使用GCC

快速安裝GCC

  • 此處以ubuntu系統的為例
  • 指令:

    sudo apt-get install gcc

    gcc安裝及使用GCC
    • 因為已經安裝了是以沒有安裝的過程
  • 注:采用此方式安裝的 GCC 編譯器,版本通常較低。

編譯安裝GCC

  • 此方式需要耗費的時間較長(幾個小時),但支援安裝指定版本的 GCC 編譯器,并适用于大多數 Linux 發行版;同時,如果想對已安裝的 GCC 編譯器進行版本更新,也可以使用此方式。
  • 編譯安裝 GCC 編譯器需要提前到 GCC 官網下載下傳指定版本的 GCC 源碼安裝包,讀者可直接點選GCC源碼包進行下載下傳。
  • 安裝步驟:
    1. 找到下載下傳好的 gcc-10.2.0.tar.gz 安裝包(2020年7月23日更新),将其解壓至 /usr/local/ 目錄下,指令為:

      sudo tar -xf gcc-10.1.0.tar.gz -C /usr/local

      gcc安裝及使用GCC
    2. 緊接着執行如下指令,下載下傳安裝 GCC 所需要的依賴包(如 gmp、mpfr、mpc 等):進入/usr/local/gcc-10.2.0目錄下

      cd /usr/local/gcc-10.2.0

      ,之後執行安裝依賴包的指令

      ./contrib/download_prerequisites

      gcc安裝及使用GCC
    3. 在/usr/local目錄下手動建立一個目錄,用于存放編譯 GCC 源碼包生成的檔案。執行如下指令:建立目錄

      sudo mkdir gcc-build-10.2.0

      之後進入gcc-10.2.0目錄下

      cd gcc-10.2.0

    4. 通過執行如下指令,可以配置 GCC 支援編譯 C 和 C++ 語言:

      ../gcc-10.2.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

      gcc安裝及使用GCC
    5. 在第 4 步建立好 makefile 檔案之後,接下來就可以使用 make 指令來編譯 GCC 源程式:

      sudo make

      (此過程十分耗時,本機使用vmware虛拟機,運作記憶體4GB,用了8個線程

      make -j8

      花了35分鐘)
    6. 最後在漫長的等待後不要忘了執行如下指令安裝 gcc:

      sudo make install

      (如果此時直接執行 gcc --version,則 GCC 版本仍會顯示之前安裝的版本。作業系統重新開機之後,GCC 版本就會自行更正過來。)
    7. 注意:因為/usr/local所在目錄本身需要sudo權限才能通路,是以最好在每個指令前加上sudo;如果某個指令執行不成功也可加上sudo再試一下。
      gcc安裝及使用GCC

gcc和g++指令的差別

  • 實際使用中我們更習慣使用 gcc 指令編譯 C 語言程式,用 g++ 指令編譯 C++ 代碼。需要強調的一點是,這并不是 gcc 和 g++ 的差別,gcc 指令也可以用來編譯 C++ 程式,同樣 g++ 指令也可以用于編譯 C 語言程式。
  • 隻要是 GCC 支援編譯的程式代碼,都可以使用 gcc 指令完成編譯。可以這樣了解,gcc 是 GCC 編譯器的通用編譯指令,因為根據程式檔案的字尾名,gcc 指令可以自行判斷出目前程式所用程式設計語言的類别。(gcc 指令也為使用者提供了“手動指定代表編譯方式”的接口,即使用 -x 選項。例如,gcc -xc xxx 表示以編譯 C 語言代碼的方式編譯 xxx 檔案;而 gcc -xc++ xxx 則表示以編譯 C++ 代碼的方式編譯 xxx 檔案。)
  • 使用 g++ 指令,則無論目标檔案的字尾名是什麼,該指令都**一律按照編譯 C++**代碼的方式編譯該檔案。
  • 如果想使用 gcc 指令來編譯執行 C++ 程式,需要在使用 gcc 指令時,手動為其添加

    -lstdc++ -shared-libgcc

    選項,表示 gcc 在編譯 C++ 程式時可以連結必要的 C++ 标準庫。即g++ 指令就等同于

    gcc -xc++ -lstdc++ -shared-libgcc

    指令

指定編譯标準

(持續更新中)

繼續閱讀