El kernel de Linux 4.19 ahora requiere la compilación de GCC 4.6 debido a fallas de compilación en la arquitectura anterior

Linux-Unix / El kernel de Linux 4.19 ahora requiere la compilación de GCC 4.6 debido a fallas de compilación en la arquitectura anterior 1 minuto de lectura

Organización Kernel de Linux, Inc.



Para los desarrolladores de Linux que trabajan en el kernel, el kernel de Linux 4.19 que se lanzará aumenta la versión mínima de GCC requerida para la construcción del kernel. El kernel oficial de Linux ha incluido GCC 3.2 como el mínimo versión del compilador requerida para la construcción del kernel, pero el kernel 4.19 de Linux lo está elevando a GCC 4.6.

Esto se debe a que varias arquitecturas en versiones anteriores de GCC4 no han podido compilar limpiamente el kernel de Linux, por lo que GCC 4.6 se establece como mínimo. El kernel también buscará explícitamente GCC 4.6.0 o más reciente y, si no se encuentra, el compilador generará un error.



Esto también es beneficioso para el código del kernel, ya que los desarrolladores del kernel pudieron eliminar varias docenas de líneas de código para las soluciones alternativas de GCC más antiguas que estaban destinadas a errores del compilador y diferencias de comportamiento en las versiones anteriores del compilador.



Este cambio se fusionó hoy mismo a través de la confirmación de Git, y GCC 4.6.0 se lanzó en 2011, por lo que veremos si GCC también tiene actualizaciones en el futuro.



El registro de cambios / confirmación de esta actualización básicamente especifica que el cambio se debe prácticamente en su totalidad a que las versiones anteriores del compilador de GCC no pudieron compilar el kernel en varias arquitecturas, como se indica a continuación:

 Varias arquitecturas no se compilan correctamente con versiones anteriores del compilador gcc. Un ejemplo de Guenter Roeck en el hilo [1]:>> En el archivo incluido desde ./include/linux/mm.h:17:0,> desde ./include/linux/pid_namespace.h:7,> desde ./include /linux/ptrace.h:10,> de arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: error: miembro de matriz flexible en una estructura de lo contrario vacía> > Este es solo un ejemplo con gcc 4.5.1 para or32. También he visto el problema> con gcc 4.4 (para unicore32). Así que actualice la versión mínima requerida de gcc a 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Diverso: - Actualizar Documentation / process / changes.rst - Eliminar y consolidar bloques de prueba de versión en compiler-gcc.h para versiones inferiores a 4.6

En cuanto a los esfuerzos de LLVM Clang para construir el kernel Linux x86_64 de la línea principal, actualmente hay algo de estancamiento con los esfuerzos, particularmente en el proyecto LLVMLinux, aunque ha habido algo de trabajo en la construcción del kernel a través del espacio ARM Linux con Clang.