Compile o kernel “Raring” do Ubuntu com o compilador Intel

4

É claro que a primeira pergunta é: por que estou fazendo isso? Apenas por diversão! Estou aprendendo mais sobre os kernels do Linux e tenho uma máquina virtual que posso substituir em 15 minutos.

Chegando ao negócio, não sei como fazer isso, então fui tentar editar o makefile (tentando aprender). Então eu comecei com o makefile no caminho ubuntu-raring/Makefile , que é o arquivo make principal; pode ser encontrado sob este link:

link

E lá eu mudei cada gcc para icc , e cada g++ para icpc , e cada -O2 para -O3 . O resultado é o seguinte:

link

Eu também segui as instruções deste site:

link

Mas, finalmente, estou recebendo erros estranhos que parecem ser causados pelo uso de gcc / g++ em vez de icc / icpc . Por exemplo, eu recebi um erro no arquivo ubuntu-raring/include/linux/compiler-gcc.h que algumas macros já estão definidas, enquanto este arquivo não deve ser incluído em primeiro lugar! A macro que o inclui está no arquivo ubuntu-raring/include/linux/compiler.h e se parece com:

#ifdef __GNUC__
#include <linux/compiler-gcc.h>
#endif

/* Intel compiler defines __GNUC__. So we will overwrite implementations
 * coming from above header files here
 */
#ifdef __INTEL_COMPILER
# include <linux/compiler-intel.h>
#endif

E enquanto eu não entendo o comentário escrito acima do cabeçalho da Intel (soa estranho ... por que você definiria implementações e então as sobrescreveria? Nunca feito isso em C ++!), removendo manualmente a inclusão do cabeçalho gcc resolvi o problema, mas surgiram outros problemas e não tenho ideia se estão relacionados.

Então agora estou confuso! O que eu fiz errado? E deveria alterar cada gcc e g++ no Makefile ser suficiente para usar um compilador diferente? Ou há outras coisas a serem mudadas que eu ignorei?

Obrigado por qualquer esforço.

    
por The Quantum Physicist 31.08.2013 / 10:13

1 resposta

7
First learn to walk, then learn to fly.

Se você quer aprender, leia. Você leu este manual de instruções para construir o kernel com o compilador Intel C ? É uma pergunta retórica b / c este manual usa uma abordagem diferente para escolher icc over gcc .

Você está fazendo três coisas ao mesmo tempo:

  • mexer com algum kernel adotado e corrigido para se encaixar no mundo do Ubuntu (que é o gcc)
  • Subir a otimização de -O2 para -O3 .
  • altere o compilador

Comece com um kernel Linux vanilla de kernel.org . Mantenha tudo padronizado e descubra como construir um kernel que funciona para o seu computador. Construa um kernel que tenha apenas os drivers que seu computador precisa, nada mais. Depois de compilar e inicializar em seu próprio kernel, você pode começar a alterar o ambiente de criação.

Ir de -O2 a -O3 provavelmente nunca funcionará. -O3 é como abrir a caixa de Pandora. Se a ativação de -O3 fosse assim tão fácil, provavelmente seria o padrão!

    
por 31.08.2013 / 12:46