CC++,然后Fortran在 AL2 023 年 - Amazon Linux 2023

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

CC++,然后Fortran在 AL2 023 年

AL2023 包括 GNU 编译器集合 (GCC) 和LLVM(低级虚拟机)Clang的前端。

的主要版本GCC将在 AL2 023 年的整个生命周期中保持不变。次要版本修复了错误,可能包含在 AL2 023 版本中。其他错误、性能和安全修复可能会反向移植到 AL2 023 年发布的主要GCC版本中。

AL2023 包含的版本 11 GCC 作为默认编译器,前端有 C (gcc)、C++ (g++) 和 Fortran (gfortran)。此外, AL2023 提供GCC版本 14 作为可选的替代编译器,可以与默认版本一起安装。

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

构建 AL2 023 RPMs 时使用的默认编译器标志包括优化和强化标志。要使用 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

有关 AL2 023 及其与其他 Linux 发行版关系的更多信息,请参阅与 Fedora 的关系

有关 AL2 023 年编译器三元组与之相比的变化的更多信息, AL2请参阅。编译器三元组

GCC14

AL2023 提供 GCC 14 作为可选编译器,可以与默认的 GCC 11 一起安装。 GCC14 包括最新的语言功能和优化,使其适用于需要更新 C、C++ 或 Fortran 标准支持的项目。

要安装 GCC 14,请使用以下命令:

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

这 GCC 14 个编译器安装时使用特定于版本的命令名,以避免与默认的 11 个编译器发生冲突:GCC

  • 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)

注意

GCC11 和 GCC 14 可以同时安装在同一个系统上。默认gccg++、和gfortran命令将继续使用 GCC 11,而 GCC 14 则通过特定于版本的命令进行访问。

语言标准版本比较

下表比较了不同 Amazon Linux 版本和GCC编译器版本的默认语言标准版本:

Amazon Linux 版本 C 标准(默认) C++ 标准(默认) Fortran 标准
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版本的主要改进:

  • GCC10 vs GCC 7:将默认 C 标准从 C11 升级到 C17/C18,增加了对 C++20 功能的支持,并改进了优化功能。

  • GCC11 vs GCC 10:将默认 C++ 标准从 C++14 升级到 C++17,增强了 C++20 支持,并添加了实验性 C++23 功能。

  • GCC14 vs GCC 11:添加了完整的 C23 标准支持、增强的 C++23 功能、改进的优化以及更好的标准合规性。

支持的语言标准:

  • C 标准:所有版本都支持 C90、C99、C11 和 C17/C18。 GCC10+ 支持 C2x(草稿 C23),而 GCC 14 则提供全面的 C23 支持。

  • C++ 标准:所有版本都支持 C++98、C++03、C++11、C++14、C++17 和 C++20。 GCC11+ 提供实验性 C++23 支持,其中 GCC 14 提供增强的 C++23 功能。

  • Fortran Standards:所有版本都主要支持 Fortran 2008,Fortran 2018 的功能级别因版本而异。GCC

注意

虽然默认标准在 GCC 11 和 14 之间保持一致,但 GCC 14 提供了显著改进的语言功能支持、更好的优化、增强的诊断,并且在使用-std=标志明确要求时可以更完整地实现新标准。