O kernel do Linux 4.19 agora requer GCC 4.6 para construir, devido a falhas de compilação em arquiteturas mais antigas

Linux-Unix / O kernel do Linux 4.19 agora requer GCC 4.6 para construir, devido a falhas de compilação em arquiteturas mais antigas 1 minuto lido

Linux Kernel Organization, Inc.



Para desenvolvedores Linux que trabalham no kernel, o kernel Linux 4.19 a ser lançado aumenta a versão mínima do GCC necessária para a construção do kernel. O kernel oficial do Linux listou o GCC 3.2 como o mínimo versão do compilador necessária para a construção do kernel, mas o kernel do Linux 4.19 está elevando isso para o GCC 4.6.

Isso ocorre porque várias arquiteturas em versões mais antigas do GCC4 não conseguiram compilar o kernel do Linux de maneira limpa, por isso o GCC 4.6 está sendo definido como o mínimo. O kernel também verificará explicitamente o GCC 4.6.0 ou mais recente e, se não for encontrado, o compilador apresentará um erro.



Isso também é benéfico para o código do kernel, já que os desenvolvedores do kernel foram capazes de remover várias dezenas de linhas de código para soluções alternativas do GCC mais antigas que visavam a bugs do compilador e diferenças de comportamento nas versões do compilador mais antigas.



Essa mudança foi mesclada hoje mais cedo por meio do Git commit - e o GCC 4.6.0 foi lançado em 2011, então veremos se o GCC tem alguma atualização no futuro também.



O changelog / commit para esta atualização basicamente especifica que a mudança é quase inteiramente devido a versões mais antigas do compilador GCC falhando ao construir o kernel em várias arquiteturas, conforme observado abaixo:

 Várias arquiteturas falham em construir adequadamente com versões anteriores do compilador gcc. Um exemplo de Guenter Roeck na discussão [1]:>> No arquivo incluído de ./include/linux/mm.h:17:0,> de ./include/linux/pid_namespace.h:7,> de ./include /linux/ptrace.h:10,> de arch / openrisc / kernel / asm-offsets.c: 32:> ./include/linux/mm_types.h:497:16: erro: membro de matriz flexível em uma estrutura vazia> > Este é apenas um exemplo com gcc 4.5.1 para or32. Eu vi o problema> com gcc 4.4 (para unicore32) também. Portanto, atualize a versão mínima necessária do gcc para 4.6. [1] https://lore.kernel.org/lkml/20180814170904.GA12768@roeck-us.net/ Diversos: - Atualizar documentação / processo / changes.rst - Remover e consolidar blocos de teste de versão em compiler-gcc.h para versões anteriores a 4.6

No que diz respeito aos esforços do LLVM Clang para construir o kernel do Linux x86_64 da linha principal, atualmente há alguns empates com os esforços, particularmente no projeto LLVMLinux - embora tenha havido algum trabalho na construção do kernel através do espaço ARM Linux com Clang.