Linux内核版本与GCC版本匹配

Linux内核版本与GCC版本匹配

有没有推荐的用于编译 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应该总是足够的,至少对于构建没有远的比为您的系统正式打包的内核更新。

相关内容