本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 供應商分支gcc --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 可以同時安裝在相同的系統上。預設 gcc
、 g++
和 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=
旗標明確請求時,可提供大幅改善的語言功能支援、更佳的最佳化、增強的診斷,以及更完整的新標準實作。