AL2023 中的 C、C++ 和 Fortran - Amazon Linux 2023

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AL2023 中的 C、C++ 和 Fortran

AL2023 包含 GNU 編譯器集合 (GCC) 和 LLVM(低階虛擬機器) Clang的前端。

GCC 的主要版本將在整個 AL2023 的壽命週期保持不變。次要版本導入錯誤修正,並可能包含在 AL2023 版本中。其他錯誤、效能和安全修正可能會反向移植至 AL2023 隨附的 GCC 主要版本。

AL2023 包含 第 11 版GCC作為具有 C (gcc)、C++ (g++) 和 Fortran (gfortran) 前端的預設編譯器。此外,AL2023 提供第 14 GCC版做為選用的替代編譯器,可與預設版本一起安裝。

AL2023 不會啟用 Ada(gnat)、 Go(gcc-go)、 Objective-C 或 Objective-C++ 前端。

預設的編譯器會標記 AL2023 RPM 是使用包含最佳化和強化旗標建置。若要使用 GCC 建置您自己的程式碼,我們建議您包含最佳化和強化旗標。

注意

調用 gcc --version 時,會顯示 gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4) 等的版本字串。Red Hat 指的是 Amazon Linux GCC 套件所基於的 GCC 供應商分支。根據 顯示的錯誤報告 URLgcc --help,所有錯誤報告和支援請求都應導向 Amazon Linux。

如需此廠商分支中某些長期變更的詳細資訊,例如__GNUC_RH_RELEASE__巨集,請參閱 Fedora 套件來源

如需核心工具鏈的詳細資訊,請參閱 核心工具鏈套件 glibc、gcc、binutils

如需 AL2023 及其與其他 Linux 發行版本之關係的詳細資訊,請參閱 與 Fedora 的關係

如需 AL2023 中相較於 AL2 的編譯器三元組變更的詳細資訊,請參閱 編譯器三元組

GCC 14

AL2023 提供 GCC 14 作為選用編譯器,可與預設 11 GCC 一起安裝。14 GCC 包含最新的語言功能和最佳化,因此適合需要較新的 C、C++ 或 Fortran 標準支援的專案。

若要安裝 GCC 14,請使用下列命令:

sudo dnf install gcc14 gcc14-c++ gcc14-gfortran

14 GCC 個編譯器會安裝版本特定的命令名稱,以避免與預設的 GCC 11 衝突:

  • gcc14-gcc - C 編譯器

  • gcc14-g++ - C++ 編譯器

  • gcc14-gfortran - Fortran 編譯器

使用範例:

gcc14-gcc -o myprogram myprogram.c gcc14-g++ -o mycppprogram mycppprogram.cpp gcc14-gfortran -o myfortranprogram myfortranprogram.f90

您可以執行下列動作來驗證已安裝的版本:

gcc14-gcc --version

這會顯示類似下列內容的版本資訊: gcc14-gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)

注意

11 GCC 和 GCC 14 可以同時安裝在相同的系統上。預設 gccg++gfortran命令將繼續使用 GCC 11,而 GCC 14 是透過版本特定的命令存取。

語言標準版本比較

下表比較不同 Amazon Linux 版本和GCC編譯器版本的預設語言標準版本:

Amazon Linux 版本 C 標準 (預設) C++ 標準 (預設) Fortran Standard
AL2 搭配 GCC 7 (預設) C11 (201112L) C++14 (201402L) Fortran 2008
AL2 搭配 GCC 10 (選用) C17/C18 (201710L) C++14 (201402L) Fortran 2008
AL2023 搭配 GCC 11 (預設) C17/C18 (201710L) C++17 (201703L) Fortran 2008
AL2023 搭配 GCC 14 (選用) C17/C18 (201710L) C++17 (201703L) Fortran 2008

依GCC版本的關鍵改進:

  • GCC 10 與 GCC 7:將預設 C 標準從 C11 升級至 C17/C18,新增對 C++20 功能的支援,並改善最佳化功能。

  • GCC 11 與 GCC 10:將預設 C++ 標準從 C++14 升級至 C++17、增強 C++20 支援,並新增實驗性 C++23 功能。

  • GCC 14 與 GCC 11:新增完整的 C23 標準支援、增強的 C++23 功能、改善的最佳化,以及更好的標準合規。

支援的語言標準:

  • C 標準:所有版本都支援 C90, C99, C11 和 C17/C18。10+ GCC 支援 C2x (草稿 C23),而 GCC 14 提供完整的 C23 支援。

  • C++ 標準:所有版本都支援 C++98、C++03、C++11、C++14、C++17 和 C++20。11+ GCC 提供實驗性 C++23 支援,14 GCC 提供增強的 C++23 功能。

  • Fortran 標準:所有版本主要支援 Fortran 2008,視GCC版本而定,Fortran 2018 功能具有不同層級。

注意

雖然預設標準在 GCC 11 和 14 之間保持一致,但 GCC 14 在使用 -std=旗標明確請求時,可提供大幅改善的語言功能支援、更佳的最佳化、增強的診斷,以及更完整的新標準實作。