Debian
使用備用 GCC 版本編譯核心可能會產生什麼後果?
相關:
我也只是遇到了這個問題,而不是打更新檔;
我用不同的gcc版本配置了alternatives,從v4跳到v5,現在正在編譯。
$ 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
可能會出現什麼問題,是否有選擇 GCC 版本來編譯核心的最佳實踐?
該系統是 Debian Stretch。
根據核心文件,您應該能夠使用從 3.2 開始的任何版本的 GCC。但在實踐中,我認為舊版本的 GCC 往往不會在核心建構中進行太多測試,所以你最好使用新版本的 GCC(但不是太新,GCC 6 存在問題)。
在 Debian 中,您可以通過查看核心源包的建構依賴項或核心頭包的依賴項來找到合適的 GCC 版本。因此,
linux-headers-4.7.0-1-amd64
取決於linux-compiler-gcc-5-x86
哪個取決於gcc-5
。
CC
您可以通過從中提取值來自動檢索正確的值(如有必要,/usr/src/linux-headers-$(uname -r)/.kernelvariables
在安裝後)。linux-headers-$(uname -r)
例如,我的系統目前有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
無論預設的 GCC(我使用 GCC 6 作為預設值),使用它
CC
都會生成一個工作核心(或執行核心的模組)。