有没有推荐的用于编译 Linux 内核的 GCC 版本?
我找到了 Linux 内核的头文件“compiler-GCC”。它是否包含有关内核推荐的 GCC 版本的信息?也就是说,我可以在 Linux 内核源代码中找到有关编译的信息吗?
答案1
您应该能够使用相当老版本的 GCC 构建 Linux 内核,可能可以追溯到 GCC 3.2。Linux 4.9.4 中的顶层 README 文件提及:
- Make sure you have at least gcc 3.2 available.
For more information, refer to Documentation/Changes.
和文档/变更给出了所需的 GCC 版本列表(列为“GNU C”)和 Linux 的其他构建依赖项,以及如何检查您当前安装的每个版本的版本:
====================== =============== ========================================
Program Minimal version Command to check the version
====================== =============== ========================================
GNU C 3.2 gcc --version
GNU make 3.80 make --version
binutils 2.12 ld -v
util-linux 2.10o fdformat --version
module-init-tools 0.9.10 depmod -V
e2fsprogs 1.41.4 e2fsck -V
jfsutils 1.1.3 fsck.jfs -V
reiserfsprogs 3.6.3 reiserfsck -V
xfsprogs 2.6.0 xfs_db -V
squashfs-tools 4.0 mksquashfs -version
btrfs-progs 0.18 btrfsck
pcmciautils 004 pccardctl -V
quota-tools 3.09 quota -V
PPP 2.4.0 pppd --version
isdn4k-utils 3.1pre1 isdnctrl 2>&1|grep version
nfs-utils 1.0.5 showmount --version
procps 3.2.0 ps --version
oprofile 0.9 oprofiled --version
udev 081 udevd --version
grub 0.93 grub --version || grub-install --version
mcelog 0.6 mcelog --version
iptables 1.4.2 iptables -V
openssl & libcrypto 1.0.0 openssl version
bc 1.06.95 bc --version
Sphinx\ [#f1]_ 1.2 sphinx-build --version
====================== =============== ========================================
.. [#f1] Sphinx is needed only to build the Kernel documentation
检查Documentation/Changes
您实际计划编译的内核源中的文件是一个好主意。
综上所述,使用相对较新的 GCC 版本可能是一个好主意,因为新版本有更好的优化器,因此通常可以生成更快的代码,而且新版本有更易读的诊断功能,因此可能更容易找出构建失败的原因。
一般来说,我建议使用官方为你的系统打包的 GCC 版本。在 Ubuntu 中,作为元包依赖项安装的 GCC 版本build-essential
应该总是足够的,至少对于构建没有远的比为您的系统正式打包的内核更新。