C, C++ y Fortran en AL2023
AL2023 incluye tanto la colección de compiladores de GNU (GCC) como la interfaz Clang de LLVM (máquina virtual de bajo nivel).
La versión principal de GCC permanecerá constante durante toda la vida útil de AL2023. Las versiones menores incluyen correcciones de errores y podrían incluirse en las versiones de AL2023. Es posible que otras correcciones de errores, rendimiento y seguridad estén incorporadas a la versión principal de GCC que se incluye en AL2023.
AL2023 incluye la versión 11 de GCC como compilador predeterminado con las interfaces C (gcc), C++ (g++) y Fortran (gfortran). Además, AL2023 proporciona la versión 14 de GCC como un compilador alternativo opcional que se puede instalar junto con la versión predeterminada.
AL2023 no habilita las interfaces Ada (gnat), Go (gcc-go), Objective-C ni Objective-C++.
Los indicadores de compilación predeterminados con los que se crean los RPM de AL2023 incluyen indicadores de optimización y endurecimiento. Para crear su propio código con GCC, le recomendamos que incluya indicadores de optimización y endurecimiento.
nota
Cuando se invoca gcc --version, se muestra una cadena de versión como la siguiente gcc (GCC) 11.3.1 20221121 (Red Hat 11.3.1-4). Red Hat hace referencia a la ramificación de proveedores de GCCgcc --help, todos los informes de errores y las solicitudes de soporte deben dirigirse a Amazon Linux.
Para obtener más información sobre algunos de los cambios a largo plazo en esta rama de proveedores, como la macro de __GNUC_RH_RELEASE__, consulte las fuentes de los paquetes de Fedora
Para obtener más información sobre la cadena de herramientas principal, consulte Paquetes principales de cadenas de herramientas glibc, gcc, binutils.
Para obtener información sobre AL2023 y su relación con otras distribuciones de Linux, consulte Relación con Fedora.
Para obtener información adicional sobre el cambio del triplete del compilador en AL2023 en comparación con AL2, consulte Triplete del compilador.
GCC 14
AL2023 proporciona GCC 14 como compilador opcional que se puede instalar junto con GCC 11 predeterminado. GCC 14 incluye las últimas funciones y optimizaciones del lenguaje, lo que lo hace adecuado para proyectos que requieren compatibilidad con los estándares C, C++ o Fortran más recientes.
Para instalar GCC 14, utilice el siguiente comando:
sudo dnf install gcc14 gcc14-c++ gcc14-gfortran
Los compiladores de GCC 14 se instalan con nombres de comandos específicos de cada versión para evitar conflictos con GCC 11 predeterminado:
gcc14-gcc: compilador de Cgcc14-g++: compilador de C++gcc14-gfortran: compilador de Fortran
Ejemplo de uso:
gcc14-gcc -o myprogram myprogram.c gcc14-g++ -o mycppprogram mycppprogram.cpp gcc14-gfortran -o myfortranprogram myfortranprogram.f90
Puede comprobar la versión instalada ejecutando:
gcc14-gcc --version
Esto mostrará información de la versión similar a la siguiente: gcc14-gcc (GCC) 14.2.1 20250110 (Red Hat 14.2.1-7)
nota
Tanto GCC 11 como GCC 14 se pueden instalar simultáneamente en el mismo sistema. Los comandos gcc, g++ y gfortran predeterminados seguirán utilizando GCC 11, mientras que el acceso a GCC 14 se realizará a través de los comandos específicos de la versión.
Comparación de versiones de lenguajes estándar
En la siguiente tabla se comparan las versiones estándar de lenguajes predeterminados entre las distintas versiones de Amazon Linux y versiones del compilador de GCC:
| Versión de Amazon Linux | Estándar C (predeterminado) | Estándar C++ (predeterminado) | Estándar de Fortran |
|---|---|---|---|
| AL2 con GCC 7 (predeterminado) | C11 (201112L) | C++14 (201402L) | Fortran 2008 |
| AL2 con GCC 10 (opcional) | C17/C18 (201710L) | C++14 (201402L) | Fortran 2008 |
| AL2023 con GCC 11 (predeterminado) | C17/C18 (201710L) | C++17 (201703L) | Fortran 2008 |
| AL2023 con GCC 14 (opcional) | C17/C18 (201710L) | C++17 (201703L) | Fortran 2008 |
Mejoras clave por versión de GCC:
-
GCC 10 frente a GCC 7: se actualizó el estándar C predeterminado de C11 a C17/C18, se agregó compatibilidad con las funciones de C++20 y se mejoraron las capacidades de optimización.
-
GCC 11 frente a GCC 10: se actualizó el estándar predeterminado de C++ de C++14 a C++17, se mejoró la compatibilidad con C++20 y se agregaron características experimentales de C++23.
-
GCC 14 frente a GCC 11: se agregó compatibilidad total con el estándar C23, se mejoraron las características de C++23, se mejoró la optimización y se mejoró el cumplimiento de las normas.
Estándares de lenguajes compatibles:
-
Estándares C: todas las versiones son compatibles con C90, C99, C11 y C17/C18. GCC 10+ es compatible con C2x (borrador de la C23), mientras que GCC 14 es totalmente compatible con la versión C23.
-
Estándares C++: todas las versiones son compatibles con C++98, C++03, C++11, C++14, C++17 y C++20. GCC 11+ ofrece compatibilidad experimental con C++23 y GCC 14 ofrece características mejoradas de C++23.
-
Estándares de Fortran: todas las versiones son compatibles principalmente con Fortran 2008, con diferentes niveles de funciones de Fortran 2018 según la versión GCC.
nota
Si bien los estándares predeterminados se mantienen consistentes entre la versión GCC 11 y la 14, GCC 14 proporciona una compatibilidad significativamente mejorada con las características del lenguaje, una mejor optimización, un diagnóstico mejorado y una implementación más completa de los estándares más nuevos cuando se solicita explícitamente mediante marcas -std=.