查看内核是使用哪个版本的 GCC 编译的,可以使用 modinfo
命令来查看内核模块信息,其中包括使用的编译器版本。但请注意,并不是所有的内核模块都包含了这些信息。如果内核模块提供了,则你可以通过以下方式查看:
modinfo -F vermagic <module_name>
将 <module_name>
替换成你想查看的模块名称,比如 e1000e
、btrfs
等。
输出示例可能如下所示:
5.4.0-66-generic SMP mod_unload modversions
x86_64 优化的 GCC 版本 9.3.0 ...
另一种方法是查看 System.map
文件或者 /proc/version
文件,里面通常也会包含编译内核时使用的 GCC 版本信息。例如:
通过 /proc/version
查看:
cat /proc/version
输出将显示类似以下内容:
Linux version 5.4.0-66-generic (buildd@lgw01-amd64-033)
(gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04))
#74-Ubuntu SMP Wed Jan 27 22:54:38 UTC 2021
请注意,这个方法显示了系统当前运行的内核版本是使用哪个 GCC 版本编译的。如果内核有过升级,且并不是用同一版本的 GCC 编译的,这种方法只能显示当前内核的信息。
对于系统上当前未运行的其他内核版本,如果 modinfo
不可用,获取编译器版本的方法可能不那么直接,可能需要查找适当的文档或构建配置文件。