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