Questão As versões do gcc estão vinculadas às versões do kernel?


Existe algum link entre as versões do gcc e a versão de um kernel? Especificamente, eu seria capaz de instalar uma versão muito antiga do gcc no kernel mais recente. Alternativamente, eu seria capaz de construir a versão mais recente do gcc em um kernel muito antigo? Existem problemas de compatibilidade entre os dois para qualquer versão?


5
2017-07-11 17:16


origem




Respostas:


Você pode ter problemas compilação novos grãos com muito velho versões do GCC.

Além disso, não, as versões do GCC não estão vinculadas à versão do kernel do Linux:

  • Você pode executar uma versão antiga do GCC em um sistema com um novo kernel.
  • Você pode executar uma nova versão do GCC em um sistema com um kernel muito antigo. A única coisa que impediria você de fazer isso seria se a sua nova versão do GCC exigir uma versão do libc que não será executado nesse kernel. Mas este não é um cenário particularmente provável.

Com isso dito, você deve ter cuidado ao instalar um GCC mais antigo sobre um novo GCC, uma vez que o novo GCC pode ser necessário. Se você está criando o GCC você mesmo a partir do código fonte, você pode configurar o build para instalar em seu próprio prefixo (ao invés de /usr). Se isso ainda interromper as compilações, verifique se o GCC mais novo (que estava lá antes) está em um diretório anterior PATH variável de ambiente que o antigo GCC (que você instalou mais recentemente).


8
2017-07-11 17:24





Eu ficaria desconfiado de usar versões mais antigas do GCC em sistemas mais novos, especialmente se os executáveis ​​da versão mais antiga não forem chamados gcc-1.3 (por exemplo, se neste caso a versão for 1.3), porque senão pode entrar em conflito com a versão atual usada para tudo no seu sistema Ubuntu, e quebrar as coisas.

Para responder à sua pergunta, o kernel e o GCC não estão diretamente relacionados, mas é provável que o kernel seja construído com a versão do GCC que você está usando (ou um pouco mais antiga).


2
2017-07-11 17:21





Sim. Alguns novos recursos do kernel precisam que a última versão do gcc e do glibc funcionem bem. Mas não é uma restrição restrita como o kernel 3.0.2 funciona apenas com o gcc 4.2.1. É mais parecido com o kernel 3.x funcionar apenas com o gcc 4.2.x


1
2017-07-11 17:23



Parece que você pode estar confundindo as versões do compilador necessárias para construir um kernel com o que é necessário para corre um kernel. Rodar um kernel nunca requer que um compilador seja instalado. Você pode querer expandir essa resposta, porque você está em algo que as outras respostas não cobrem atualmente: Com algumas versões do compilador, você pode não ser capaz de construir módulos para o kernel atualmente em execução. - Eliah Kagan