É possível compilar um sistema Linux completo com o compilador da Intel em vez do GCC?

26

Talvez esta seja uma ideia estúpida? Talvez haja alguns problemas de compatibilidade?

Tenho a impressão de que, para sistemas baseados em Intel, o compilador da Intel poderia fazer um trabalho melhor do que o GCC. Talvez já exista uma distro que tenha tentado isso?

Eu acho que isso pode ser bastante simples usando o Gentoo.

    
por barrymac 28.07.2011 / 00:05

2 respostas

29

Você não poderá compilar tudo com o icc. Muitos programas por aí usam extensões do GCC para a linguagem C. No entanto, a Intel fez um grande esforço para suportar a maioria dessas extensões; por exemplo, versões recentes do icc podem compilar o kernel do Linux.

O Gentoo é de fato sua melhor aposta se você quiser recompilar seu software de uma maneira incomum. A página do icc no wiki do Gentoo descreve os principais obstáculos.

Primeiro, faça uma instalação básica do Gentoo e emerge icc . Não remova o icc mais tarde, contanto que você tenha qualquer binário compilado com o icc no seu sistema. Observe que o icc está instalado em /opt ; se não estiver na sua partição raiz, você precisará copiar as bibliotecas icc para sua partição root se algum dos programas usados no momento da inicialização for compilado com o icc.

Configure /etc/portage/bashrc e declare suas opções de compilação favoritas; veja o wiki do Gentoo para um script mais completo que suporta a construção de diferentes pacotes com diferentes compiladores (isto é necessário porque icc quebra alguns pacotes).

export OCC="icc" CFLAGS="-O2 -gcc"
export OCXX="icpc" CXXFLAGS="$CFLAGS"
export CC_FOR_BUILD="${OCC}"
    
por 28.07.2011 / 02:32
13

Seria certamente uma experiência interessante. Recompilar uma distribuição Linux inteira usando um compilador alternativo não seria realmente simples. Muitos pacotes essenciais dependem do GCC e outros utilitários GNU toolchain.

Seria possível usar um compilador alternativo para os pacotes que não exigem o GCC para criar um híbrido. Pode ser possível substituir os pacotes dependentes do GCC por outros que seriam compilados com o seu compilador, mas na maioria dos casos não há muitas alternativas. Onde houver, você terá que determinar se essas alternativas serão tão funcionais para o uso pretendido.

A verdadeira questão é: valeria a pena? Se você está tentando criar um sistema embarcado, um compilador alternativo pode produzir binários menores. Se você estiver criando um cluster de computação, poderá obter uma execução de código mais rápida. Se você está criando um desktop, terá uma ótima experiência de aprendizado.

Acho que no final (supondo que você esteja criando um desktop) você descobrirá o que muitos usuários de distro de origem decidem: a quantidade de tempo gasto na otimização, na construção e na reconstrução supera em muito o tempo economizado pela execução mais rápida de código . Isso não quer dizer que não deva ser feito - pode ser bem divertido. Se você fizer isso, este site seria um ótimo lugar para encontrar respostas e documentar seus esforços.

    
por 28.07.2011 / 01:33

Tags