在深度学习、高性能计算等领域,CUDA作为NVIDIA推出的并行计算平台,是发挥GPU算力的核心工具。对于Ubuntu用户而言,CUDA的安装过程虽不算复杂,但版本匹配、驱动兼容等问题常让人踩坑。下面以Ubuntu 20.04/22.04为基础,详细讲解CUDA的安装流程,同时梳理高频报错的解决思路。
一、安装前必做:基础检查与准备
CUDA安装的核心前提是"硬件支持+版本匹配",跳过准备步骤直接安装,大概率会导致失败。请务必逐一完成以下检查。

1.1 确认GPU是否支持CUDA
CUDA仅支持NVIDIA显卡,且需为"计算能力≥3.5"的型号(最新CUDA版本对计算能力要求更高,如CUDA 12.x需≥5.2)。
操作步骤:
-
通过命令查看显卡型号:
bashlspci | grep -i nvidia输出结果如"NVIDIA Corporation GP104 [GeForce GTX 1080 Ti]"。
-
在NVIDIA官方列表中查询显卡的计算能力,确认是否支持目标CUDA版本。
1.2 匹配Ubuntu与CUDA版本
不同Ubuntu版本对CUDA的支持存在限制,比如Ubuntu 22.04不支持CUDA 11.4及以下版本。下表为常见版本对应关系(更新至2025年5月):
| Ubuntu版本 | 支持的CUDA版本范围 | 推荐版本 |
|---|---|---|
| 22.04 LTS | 11.5 - 12.9 | 12.4(兼容性最优) |
| 20.04 LTS | 11.0 - 12.9 | 11.8(兼顾老项目与新功能) |
| 18.04 LTS | 10.2 - 12.2 | 11.6(最后一个长期支持版本) |
提示:若需适配特定框架(如TensorFlow 2.10需CUDA 11.2),需优先满足框架的CUDA版本要求,再反向匹配Ubuntu系统。
1.3 禁用开源驱动nouveau
Ubuntu默认的nouveau开源驱动会与NVIDIA闭源驱动冲突,导致CUDA安装失败或运行异常,必须提前禁用。
操作步骤:
-
创建禁用配置文件:
bashsudo tee /etc/modprobe.d/blacklist-nouveau.conf << EOF blacklist nouveau blacklist lbm-nouveau options nouveau modeset=0 EOF -
更新initramfs并重启:
bashsudo update-initramfs -u sudo reboot -
验证禁用结果:重启后执行如下命令,无输出则表示禁用成功。
bashlsmod | grep nouveau
1.4 系统更新与依赖安装
确保系统组件最新,同时安装CUDA所需的编译工具和依赖库:
bash
sudo apt update && sudo apt upgrade -y
sudo apt install build-essential gcc g++ make -y
二、两种主流安装方式:Deb包 vs Run文件
NVIDIA官方提供Deb包和Run文件两种安装方式,Deb包适合新手(自动配置源),Run文件适合需要自定义安装路径的场景。以下分别详解。
方式一:Deb包安装
以Ubuntu 22.04安装CUDA 12.4为例,步骤如下:

2.1.1 下载对应Deb包
-
访问CUDA Toolkit归档页面,选择"CUDA 12.4.0",系统选择"Linux x86_64 Ubuntu 22.04",安装方式选择"deb (local)"。
-
复制页面提供的下载链接,通过wget命令下载(避免浏览器下载中断):
bashwget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.15-1_amd64.deb
2.1.2 安装并配置软件源
-
安装本地Deb包:
bashsudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.15-1_amd64.deb -
导入GPG公钥(解决"签名无效"问题): 页面会提示公钥文件路径,形如:
bashsudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/ -
更新软件源:
bashsudo apt update
2.1.3 安装CUDA Toolkit
执行安装命令,该过程会自动安装匹配的NVIDIA驱动:
bash
sudo apt install cuda -y
安装完成后重启系统:
bash
sudo reboot
方式二:Run文件安装(自定义需求)
若需指定安装路径或仅安装部分组件,选择Run文件安装。以Ubuntu 20.04安装CUDA 11.8为例:
2.2.1 下载Run文件
在CUDA归档页面选择"CUDA 11.8.0",系统选择"Linux x86_64 Ubuntu 20.04",安装方式选择"runfile (local)",复制下载命令:
bash
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
为避免下载中断,可添加-c参数支持断点续传:
bash
wget -c https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
2.2.2 执行安装程序
-
添加执行权限:
bashchmod +x cuda_11.8.0_520.61.05_linux.run -
执行安装(需sudo权限):
bashsudo sh cuda_11.8.0_520.61.05_linux.run -
安装界面操作: 同意协议:输入"accept"并回车。
-
组件选择:若已单独安装过NVIDIA驱动,取消勾选"Driver";保留"CUDA Toolkit 11.8"及相关组件。
-
指定路径:默认安装在
/usr/local/cuda-11.8,如需自定义路径,在"Options"中修改。 -
确认安装:选择"Install"等待完成。
三、环境变量配置:让系统识别CUDA
安装完成后,需配置环境变量才能让系统调用CUDA工具(如nvcc编译器)。根据所使用的Shell(bash或zsh)选择配置文件。
3.1 bash用户(默认)
-
编辑~/.bashrc文件:
bashnano ~/.bashrc -
在文件末尾添加以下内容(将"12.4"替换为实际安装的CUDA版本):
bashexport PATH=/usr/local/cuda-12.4/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} -
保存并生效配置:
bashsource ~/.bashrc
3.2 zsh用户(如使用oh-my-zsh)
编辑~/.zshrc文件并生效:
bash
nano ~/.zshrc
(添加同上环境变量)
bash
source ~/.zshrc
3.3 多版本CUDA切换
若系统中安装多个CUDA版本(如11.8和12.4),可通过update-alternatives工具管理默认版本:
-
注册版本到系统:
bashsudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-11.8 1 sudo update-alternatives --install /usr/local/cuda cuda /usr/local/cuda-12.4 2(数字2表示优先级,越大越优先)
-
切换默认版本:
bashsudo update-alternatives --config cuda根据提示输入对应编号即可。
四、安装验证:确认CUDA可用
通过以下4步验证,确保CUDA驱动、工具包、运行时均正常工作。
4.1 验证NVIDIA驱动
执行命令查看驱动版本和支持的CUDA版本:
bash
nvidia-smi
输出结果中"Driver Version"为驱动版本,"CUDA Version"为驱动支持的最高CUDA版本(如550.54.15对应CUDA 12.4)。
4.2 验证CUDA编译器
查看nvcc版本,确认环境变量配置生效:
bash
nvcc -V
若输出"nvcc: NVIDIA (R) Cuda compiler driver"及对应版本信息,说明编译器可用。
4.3 运行CUDA示例程序
通过官方示例验证CUDA运行时是否正常:
-
复制示例代码到本地目录:
bashcp -r /usr/local/cuda-12.4/samples ~/cuda-samples -
编译设备查询程序:
bashcd ~/cuda-samples/1_Utilities/deviceQuery make -
运行程序:
bash./deviceQuery
若输出"Result = PASS",表示CUDA已完全适配GPU;若为"FAIL",则需检查驱动与CUDA版本匹配性。
4.4 测试带宽性能
运行带宽测试程序验证GPU与内存的数据传输能力:
bash
cd ~/cuda-samples/1_Utilities/bandwidthTest make && ./bandwidthTest
输出"Result = PASS"即为正常。
五、高频报错及解决方案(实战总结)
结合大量安装案例,梳理出10类常见报错,涵盖下载、安装、运行全流程,附具体解决步骤。
报错1:CUDA Toolkit下载速度极慢或中断
现象 :浏览器或wget下载时速度低于100KB/s,频繁断开。 原因 :NVIDIA官方服务器在境外,网络链路不稳定。 解决方案:使用国内镜像源,如清华大学开源镜像站:
-
访问清华CUDA镜像,找到对应版本的deb包或run文件。
-
复制镜像链接,用wget下载:
bashwget -c https://mirrors.tuna.tsinghua.edu.cn/nvidia-cuda/ubuntu2204/x86_64/cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.15-1_amd64.deb
报错2:安装时提示"依赖关系不足"
现象 :dpkg安装deb包时出现"Unmet dependencies",如缺少libssl1.1。 原因 :系统缺少CUDA依赖的库文件。 解决方案:
-
自动修复依赖关系:
bashsudo apt --fix-broken install -y -
手动安装缺失的依赖(以libssl1.1为例,Ubuntu 22.04需单独安装):
bashwget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2.22_amd64.deb
报错3:nvidia-smi命令无输出或"command not found"
现象 :重启后执行nvidia-smi无反应,或提示命令不存在。 原因 :驱动未安装成功,或nouveau驱动未彻底禁用。 解决方案:
-
重新禁用nouveau(参考1.3节步骤),确保lsmod无输出。
-
单独安装驱动(以550版本为例):
bashsudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update && sudo apt install nvidia-driver-550 -y -
重启后再次验证:
bashnvidia-smi
报错4:nvcc -V提示"command not found"
现象 :驱动正常,但无法识别nvcc编译器。 原因 :环境变量配置错误或未生效。 解决方案:
-
检查环境变量配置是否正确:
bashcat ~/.bashrc | grep cuda确认路径与实际安装路径一致。
-
重新生效配置:
bashsource ~/.bashrc(zsh用户执行source ~/.zshrc)。
-
若仍无效,直接指定nvcc路径测试:
bash/usr/local/cuda-12.4/bin/nvcc -V若能输出则说明环境变量配置问题。
报错5:驱动版本与CUDA版本不匹配
现象 :nvidia-smi显示CUDA Version为12.4,但安装的CUDA是12.5,运行程序时提示"driver version is insufficient for cuda runtime version"。 原因 :驱动版本低于CUDA所需的最低驱动版本。 解决方案:
-
查询CUDA对应的最低驱动版本(如CUDA 12.5需驱动≥555.42.02)。
-
升级驱动至对应版本:
bashsudo apt install nvidia-driver-555 -y sudo reboot
报错6:deviceQuery测试提示"no CUDA-capable device is detected"
现象 :nvcc正常,但示例程序无法识别GPU。 原因 :GPU未被系统识别,或BIOS中禁用了GPU。 解决方案:
-
检查GPU硬件连接(台式机),笔记本需确认未切换至核显模式。
-
进入BIOS,在"Security"或"Display"中启用NVIDIA GPU。
-
检查系统是否识别GPU:若无输出则可能硬件故障。
bashlspci | grep -i nvidia
报错7:安装时"权限被拒绝"
现象 :执行sudo sh run文件时提示"Permission denied"。 原因 :文件无执行权限,或磁盘空间不足。 解决方案:
-
添加执行权限:
bashchmod +x cuda_*.run -
检查根目录空间:
bashdf -h /确保剩余空间≥20GB。
报错8:多版本CUDA切换后环境变量失效
现象 :使用update-alternatives切换版本后,nvcc版本未变化。 原因 :环境变量直接指定了固定版本路径,未使用软链接。 解决方案:
-
修改环境变量为软链接路径: 将~/.bashrc中的"cuda-12.4"改为"cuda"(软链接路径):
bashexport PATH=/usr/local/cuda/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} -
生效配置后重新切换版本:
bashsudo update-alternatives --config cuda
注意事项
-
安装前务必确认GPU兼容性、Ubuntu与CUDA版本对应关系,禁用nouveau是前提。
-
新手优先选择Deb包安装,减少配置成本;进阶用户可使用Run文件自定义安装。
-
环境变量配置后需立即生效,多版本管理建议使用update-alternatives工具。
-
报错时优先查看日志(如/var/log/nvidia-installer.log),根据具体提示定位问题,版本不匹配和环境变量是最常见诱因。
若遇到本文未覆盖的问题,可参考NVIDIA官方安装指南。