Pergunta

O kernel do Linux foi escrito para compilar com o gcc e usa muitos hacks pequenos e feios do gcc.Quais compiladores podem compilar o kernel do Linux, exceto o gcc?

Aquele que pode, é o compilador Intel.Qual versão mínima é necessária para a compilação do kernel?

Também havia um compilador Tiny C, mas ele era capaz de compilar apenas versões reduzidas e especialmente editadas do kernel.

Existem outros compiladores capazes de construir o kernel?

Foi útil?

Solução 2

Há um processo contínuo de envio de patches LLVMLinux no kernel vanilla (2013-2014).

O LLVMLinux é um projeto da The Linux Foundation: http://llvm.linuxfoundation.org/ para permitir que o kernel vanilla seja construído com LLVM.Muitos patches são preparados por Behan Webster, líder do projeto LLVMLinux.

Há um artigo da LWN sobre o projeto de maio de 2013https://lwn.net/Articles/549203/ "LFCS:O projeto LLVMLinux"

O status atual do projeto LLVMLinux é rastreado na página http://llvm.linuxfoundation.org/index.php/Bugs#Linux_Kernel_Issues

Coisas (basicamente gcc-ismos) já eliminadas do kernel:* Variáveis ​​de Registros Expícios (não C99) * VLAIs (recurso não documentado GCC compatível com C99 "Matrizes de comprimento variável em estruturas") como struct S { int array[N];} ou mesmo struct S { int array[N]; int array_usb_gadget[M]; } onde n e m são argumentos de função não constante * Funções aninhadas (recurso ADA portado para desenvolvedores C por GCC/GNAT;não permitido em C99) * Algum GCC/Gas Magic, como segmentos especiais, ou macro

Coisas a serem feitas:* Uso de __builtin_constant_p integrado para implementar magia assustadora como BUILD_BUG_ON(!__builtin_constant_p(offset));

A boa notícia sobre o LLVMLinux é que após seus patches o kernel não apenas se torna compilável com LLVM+clang, mas também mais fácil de construir por outros compiladores não-GCC, porque o projeto mata muito código não C99 como o VLAIS, criado pelo autor do gadget usb, por hackers de netfilter e por hackers de subsistemas de criptografia;também funções aninhadas são eliminadas.

Outras dicas

Informações sobre o Outsadot: você precisa corrigir o kernel para compilar usando o Intel CCBaixe o Patch Linux Kernel para compilador Intel®

Veja também É possível compilar o kernel Linux com algo diferente do GCC Para mais links e informações

Nas fontes mais recentes:http://forums.fedoraforum.org/showthread.php?p=1328718

Em suma, você não pode, porque o código do kernel foi escrito para aproveitar a semântica do compilador do GCC ... e entre o kernel e o código compilado, o relacionamento é muito forte, ou seja, deve ser compilado com o GCC ... já que O GCC usa arquivos de objeto 'ELF' (formato de vinculação incorporado), o kernel deve ser criado usando o formato do código do objeto. A menos que você possa invadir para trabalhar com outro compilador - ele pode muito bem compilar, mas pode não funcionar, pois os compiladores do Windows produzem código de PE, pode haver resultados inesperados, o que significa que o kernel pode não inicializar!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top