如何稳健地确定使用哪个版本的 GCC 从 bash shell 构建内核

如何稳健地确定使用哪个版本的 GCC 从 bash shell 构建内核

bash shell 中确定用于编译当前运行的内核的 GCC 版本的可靠方法是什么?我需要它的形式,major.minor.patch以便我可以将它与输出中第一行的最后一个标记进行比较gcc --version

我一直在/proc/version使用以下内容进行解析:

awk '{print $8}' /proc/version | tr -d ','

但是,我正在查找的版本字符串并不总是出现在/proc/version.有更稳健的方法吗?一个仅适用于 Ubuntu 的强大解决方案就足够了,如果更困难的话,无需使其独立于发行版。

答案1

我已经更新了 GAD3R 的编辑以显示他的 Pastebin 的正确输出......

该补丁于 2022 年 9 月 28 日进入 Linux 内核。

在 Ubuntu 上检查/boot/config-$(uname -r)

grep -i gcc /boot/config-$(uname -r)
 
CONFIG_CC_VERSION_TEXT="x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=120300
CONFIG_GCC11_NO_ARRAY_BOUNDS=y
CONFIG_HAVE_GCC_PLUGINS=y

这适用于 opensuse。

# gzip -dc /proc/config.gz | grep -i gcc

CONFIG_CC_VERSION_TEXT="gcc (SUSE Linux) 7.5.0"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=70500
CONFIG_HAVE_GCC_PLUGINS=y

相关内容