在 Ubuntu 22.04 上,默认的 GNU C 编译器版本是 gcc-11。但是,最新的默认内核版本(截至撰写本文时为 6.5.0-14-generic)似乎是使用 gcc-12 构建的。为什么会这样?感觉这很可能会导致与混合编译器相关的问题,并且已经给我带来了这个问题内核模块和 dkms 带来的麻烦。
答案1
笔记:6.5 内核报告正在构建,x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04)
这应该没问题。这是因为在安装过程中内核未在您的系统上构建。请参阅https://askubuntu.com/a/1171939/231142了解更多信息。在任何构建过程中,它可能会警告您不匹配已安装的版本,因为它们的名称不同。已安装的版本报告为gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04)
gcc-12
应该已经安装,但如果尚未安装,您可以通过运行以下命令来安装或重新安装:
sudo apt install --reinstall gcc-12
然后您要做的就是更新gcc
转到gcc-12
二进制文件的链接:
sudo ln -s -f /usr/bin/gcc-12 /usr/bin/gcc
您也可以通过执行以下操作将其设置回 11:
sudo ln -s -f /usr/bin/gcc-11 /usr/bin/gcc
您可以通过运行来检查gcc --version
。
terrance@terrance-ubuntu:~$ gcc --version
gcc (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
答案2
Ubuntu 22.05 GNU 编译器版本与用于构建内核的编译器存在很多不匹配的情况。
ls -l /usr/bin/gcc* ... ls -l /usr/bin/g++* ...