

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

# AL2023 中的 C、C\$1\$1 和 Fortran
<a name="c-cplusplus"></a>

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

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

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

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

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

**注意**  
調用 `gcc --version` 時，會顯示 `gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4)` 等的版本字串。`Red Hat` 指的是 Amazon Linux GCC 套件所基於的 [GCC 供應商分支](https://gcc.gnu.org/gitwrite.html#vendor)。根據 顯示的錯誤報告 URL`gcc --help`，所有錯誤報告和支援請求都應導向 Amazon Linux。  
如需此廠商分支中某些長期變更的詳細資訊，例如`__GNUC_RH_RELEASE__`巨集，請參閱 [Fedora 套件來源](https://src.fedoraproject.org/rpms/gcc/pull-request/27)。

如需核心工具鏈的詳細資訊，請參閱 [核心工具鏈套件 glibc、gcc、binutils](core-glibc.md)。

如需 AL2023 及其與其他 Linux 發行版本之關係的詳細資訊，請參閱 [與 Fedora 的關係](relationship-to-fedora.md)。

如需 AL2023 中相較於 AL2 的編譯器三元組變更的詳細資訊，請參閱 [編譯器三元組](compare-with-al2.md#compiler-triplet)。

**Topics**
+ [GCC 14](#gcc14)
+ [語言標準版本比較](#language-standards-comparison)

## GCC 14
<a name="gcc14"></a>

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

若要安裝 GCC 14，請使用下列命令：

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

 14 GCC 個編譯器會安裝版本特定的命令名稱，以避免與預設的 GCC 11 衝突：
+ `gcc14-gcc` - C 編譯器
+ `gcc14-g++` - C\$1\$1 編譯器
+ `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 是透過版本特定的命令存取。

## 語言標準版本比較
<a name="language-standards-comparison"></a>

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


| Amazon Linux 版本 | C 標準 （預設） | C\$1\$1 標準 （預設） | Fortran Standard | 
| --- | --- | --- | --- | 
| AL2 搭配 GCC 7 （預設） | C11 (201112L) | C\$1\$114 (201402L) | Fortran 2008 | 
| AL2 搭配 GCC 10 （選用） | C17/C18 (201710L) | C\$1\$114 (201402L) | Fortran 2008 | 
| AL2023 搭配 GCC 11 （預設） | C17/C18 (201710L) | C\$1\$117 (201703L) | Fortran 2008 | 
| AL2023 搭配 GCC 14 （選用） | C17/C18 (201710L) | C\$1\$117 (201703L) | Fortran 2008 | 

 **依GCC版本的關鍵改進：**
+  **GCC 10 與 GCC 7：**將預設 C 標準從 C11 升級至 C17/C18，新增對 C\$1\$120 功能的支援，並改善最佳化功能。
+  **GCC 11 與 GCC 10：**將預設 C\$1\$1 標準從 C\$1\$114 升級至 C\$1\$117、增強 C\$1\$120 支援，並新增實驗性 C\$1\$123 功能。
+  **GCC 14 與 GCC 11：**新增完整的 C23 標準支援、增強的 C\$1\$123 功能、改善的最佳化，以及更好的標準合規。

 **支援的語言標準：**
+  **C 標準：**所有版本都支援 C90, C99, C11 和 C17/C18。10\$1 GCC 支援 C2x （草稿 C23)，而 GCC 14 提供完整的 C23 支援。
+  **C\$1\$1 標準：**所有版本都支援 C\$1\$198、C\$1\$103、C\$1\$111、C\$1\$114、C\$1\$117 和 C\$1\$120。11\$1 GCC 提供實驗性 C\$1\$123 支援，14 GCC 提供增強的 C\$1\$123 功能。
+  **Fortran 標準：**所有版本主要支援 Fortran 2008，視GCC版本而定，Fortran 2018 功能具有不同層級。

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