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).