Ubuntu 22.04 LTS安装CUDA 12.1时遭遇GCC编译错误求助
我明白你在Ubuntu 22.04上安装CUDA 12.1时碰到了GCC编译报错的麻烦,先帮你理清楚系统信息和问题场景,再给你几个实用的解决思路:
你的系统详情:
x86_64 DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 DISTRIB_CODENAME=jammy DISTRIB_DESCRIPTION="Ubuntu 22.04.4 LTS" PRETTY_NAME="Ubuntu 22.04.4 LTS" NAME="Ubuntu" VERSION_ID="22.04" VERSION="22.04.4 LTS (Jammy Jellyfish)" VERSION_CODENAME=jammy ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=jammy
你遇到的编译错误片段:
from ./include/linux/spinlock.h:56,
from /tmp/selfgz3982/NVIDIA-Linux-x86_64-530.30.02/kernel/common/inc/nv-lock.h:29,
from /tmp/selfgz3982/NVIDIA-Linux-x86_64-530.30.02/kernel/common/inc/nv-linux.h:32,
from /tmp/selfgz3982/NVIDIA-Linux-x86_64-530.30.02/kernel/nvidia/nv-procfs.c:27:
/tmp/selfgz3982/NVIDIA-...
针对这个问题,我整理了几个常见的解决方向,你可以逐个尝试:
检查GCC版本兼容性:CUDA 12.1官方推荐搭配GCC 11.x版本,Ubuntu 22.04默认GCC是11.4,但如果你安装了更高版本(比如GCC 12),很可能触发兼容性问题。先查看当前GCC版本:
gcc --version,如果版本过高,按以下步骤切换:- 安装兼容版本:
sudo apt install gcc-11 g++-11 - 配置版本优先级:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 110 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 110 - 选择目标版本:
sudo update-alternatives --config gcc,在弹出的选项里选中gcc-11即可。
- 安装兼容版本:
确保内核头文件与当前内核匹配:编译NVIDIA驱动需要对应内核版本的头文件支持,先确认当前内核版本:
uname -r,然后安装对应头文件:sudo apt install linux-headers-$(uname -r),安装完成后重启再尝试CUDA安装。使用安装脚本的兼容性参数:如果你用的是官方.run格式的安装包,可以加上参数强制兼容:
sudo sh cuda_12.1.0_530.30.02_linux.run --override --gcc-path=/usr/bin/gcc-11,这样会跳过版本检查并指定用兼容的GCC编译。清理旧驱动残留:如果之前装过旧版NVIDIA驱动,残留文件可能引发冲突。先彻底卸载旧驱动:
sudo apt purge nvidia* sudo apt autoremove sudo rm -rf /usr/local/cuda*重启系统后再重新安装CUDA 12.1。
如果有更完整的错误日志,可以补充出来,我再帮你进一步排查!
备注:内容来源于stack exchange,提问作者Maifee Ul Asad

