Que conseqüências podem surgir do uso de uma versão alternativa do GCC para compilar o kernel? [fechadas]

0

Relacionado a:

Não é possível compilar o kernel: erro , o kernel não suporta o modo PIC

Eu também tive esse problema, em vez de aplicar patches;

Eu configurei alterna com uma versão diferente do gcc, pulou de v4 para v5, está compilando agora.

$ update-alternatives --config gcc
There are 3 choices for the alternative gcc (providing /usr/bin/gcc).

  Selection    Path              Priority   Status
------------------------------------------------------------
  0            /usr/bin/gcc-6     30        auto mode
  1            /usr/bin/gcc-4.8   10        manual mode
* 2            /usr/bin/gcc-5     20        manual mode
  3            /usr/bin/gcc-6     30        manual mode

Quais problemas podem surgir, existe alguma prática recomendada para escolher uma versão do GCC para compilar o kernel?

O sistema é o Debian Stretch.

    
por mikejonesey 30.10.2016 / 16:34

1 resposta

3

De acordo com a documentação do kernel , você deve ser capaz de usar qualquer versão do GCC a partir do 3.2. Na prática, porém, eu não acho que versões mais antigas do GCC tendem a ser testadas muito com o kernel, então é melhor você usar versões mais novas do GCC (mas não muito novas, há problemas com o GCC 6).

No Debian, você pode descobrir a versão apropriada do GCC, consultando o pacote de fontes do kernel . criar dependências ou dependências do pacote de cabeçalho do kernel. Assim, linux-headers-4.7.0-1-amd64 depende de linux-compiler-gcc-5-x86 que depende de gcc-5 .

Você pode recuperar o valor correto de CC automaticamente, obtendo os valores de /usr/src/linux-headers-$(uname -r)/.kernelvariables (após instalar linux-headers-$(uname -r) , se necessário). Por exemplo, meu sistema atualmente possui

override ARCH = x86
override KERNELRELEASE = 4.7.0-1-amd64
CCACHE = ccache
CC = $(if $(DEBIAN_KERNEL_USE_CCACHE),$(CCACHE)) $(CROSS_COMPILE)gcc-5
ifneq ($(DEB_BUILD_ARCH),$(DEB_HOST_ARCH))
override CROSS_COMPILE = $(DEB_HOST_GNU_TYPE)-
endif

Usar este CC produzirá um kernel funcional (ou módulo para o kernel em execução) independente do GCC padrão (eu uso o GCC 6 como padrão).

    
por 30.10.2016 / 16:49