一、前言

  最近在 Ubuntu 24.04 的工作站上装 MATLAB,本以为是一条unzip加./install就能搞定的事,结果出现了 Blackwell 架构的兼容性问题。

  于是把这次从选版、安装、验收,到桌面集成和踩坑排错的完整过程整理成这份手册,供同样使用 Ubuntu 24.04 + RTX 50 系显卡的同学参考。所有步骤均为实测。

本文对应产品为 MATLAB R2026b(2026 年 9 月底发布),适用环境为 Ubuntu 24.04 LTS + NVIDIA RTX 50 系显卡。

整个流程大致如下:

二、环境与版本选择

2.1 核心环境

  本文以如下环境为例,其他符合 §2.3 要求的 Ubuntu 发行版同理:

项目 环境
操作系统 Ubuntu 24.04 LTS(x86-64)
显卡 NVIDIA RTX 50 系(Blackwell 架构,算力 10.0 / 12.0)
显卡驱动 NVIDIA 专有驱动
MATLAB R2026b

2.2 Blackwell 的原生支持问题

  • RTX 50 系(Blackwell,算力 10.0 / 12.0)的原生 GPU 支持从 R2026a 开始提供(随 CUDA 12.8 进入 Parallel Computing Toolbox)。
  • R2025b 及更早版本运行 gpuDevice 会直接报错:GPU device is not supported because it has a higher compute capability than is natively supported。
  • 旧版本只能用 forward compatibility 模式:parallel.gpu.enableCUDAForwardCompatibility(true)。官方文档明确警告该模式”可能导致错误结果和意外行为“,且首次调用还有编译等待。不推荐作为长期方案。
  • R2026b 的 GPU 计算栈已升级至 CUDA 13.1,是当前对 Blackwell 支持最完整的版本。

2.3 ubuntu 发行版兼容性

发行版 支持范围
Ubuntu 24.04 LTS R2025a ~ R2027a 均在支持列表内
内核要求 ≥ 4.18
glibc 要求 ≥ 2.28(Ubuntu 24.04 为 2.39)

三、安装方式选择

3.1 三种方式对比

  MATLAB 在 Linux 下有三条安装路径,按使用场景挑一条即可:

方式 适用场景 特点
GUI 安装器(官方推荐) 首次安装、交互式选产品 图形界面,全选产品最方便,需要 X 显示
mpm(MATLAB Package Manager) 脚本化 / 命令行 / Docker 官方命令行工具,适合批量部署、非交互安装
静默安装 CI / 无人值守 ./install -mode silent -inputFile installer_input.txt,复用安装包内的应答文件

3.2 本机安装记录

  • 发行版:R2026b(安装包 matlab_R2026b_Linux.zip,约 283 MB 在线安装器)
  • 安装范围:先默认安装(仅核心),经安装器增装 5 个工具箱
  • 安装路径:/usr/local/MATLAB/R2026b
  • 安装日志:/tmp/mathworks_root.log(结尾 Exiting with status 0 / End - Successful)
  • 安装后占用:初次 4.6 GB → 增装工具箱后 9.0 GB;/usr/local/bin/matlab、/usr/local/bin/mex 软链接已由安装器自动创建

⚠️ 注意:默认安装只包含 MATLAB 本体,Parallel Computing Toolbox、Deep Learning Toolbox 等都需要按需增装,方法见 §6.3;涉及 GPU 的计算与深度学习功能依赖这些工具箱,详见第七节。

四、安装步骤

4.1 下载安装器

  访问 https://www.mathworks.com/downloads/,用学校账号登录,选择 R2026b → Linux (x86-64),下载 matlab_R2026b_Linux.zip。

4.2 解压并启动图形安装器

1
2
3
4
5
6
7
mkdir -p ~/matlab_install && cd ~/matlab_install
unzip ~/Downloads/matlab_R2026b_Linux.zip

# 允许 root 使用当前 X 显示(仅安装期间需要)
xhost +SI:localuser:root
sudo -H ./install
xhost -SI:localuser:root # 安装结束后撤销

4.3 安装器中的选择

  启动后按提示登录 MathWorks 账号,然后按下面的建议完成选择:

选项 建议值
安装路径 /usr/local/MATLAB/R2026b(标准位置);不想用 sudo 可装到 ~/apps/MATLAB/R2026b
产品选择 默认安装仅核心;全选约 20–25 GB 下载、30–40 GB 占用
快捷方式 勾选创建桌面 / 应用菜单快捷方式

4.4 命令行安装(mpm,备选)

  如果不想开图形界面,或者要在多台机器上重复部署,可以用官方的 mpm:

1
2
3
4
5
wget https://www.mathworks.com/mpm/glnxa64/mpm && chmod +x mpm
./mpm install --release=R2026b \
--destination=/usr/local/MATLAB/R2026b \
--products=MATLAB,Simulink,...
# 产品名与更多参数见:mpm install --help

五、安装后的验收

  装完别急着关终端,按下面三项逐条验一遍,全部通过才算真正装好。

5.1 文件与版本

1
2
ls /usr/local/MATLAB/R2026b                      # 安装目录结构
matlab -batch "disp(version); disp(version('-release'))" # 期望 26.2 / R2026b

5.2 已安装产品清单

1
matlab -batch "v=ver; for k=1:numel(v), fprintf('%-45s %s\n', v(k).Name, v(k).Version); end"

5.3 MEX 编译器

1
matlab -batch "mex -setup C++ -v"    # 期望识别 Ubuntu 24.04 自带的 g++-13

六、日常使用配置

6.1 PATH 与命令行启动

  安装器已自动创建 /usr/local/bin/matlab、/usr/local/bin/mex 软链接,终端直接敲 matlab 即可,无需手动配置。若以后重装或更换版本,可手动重建:

1
2
3
4
5
6
7
8
9
10
sudo ln -s /usr/local/MATLAB/R2026b/bin/matlab /usr/local/bin/matlab

# 或者写入 ~/.bashrc:
export PATH=/usr/local/MATLAB/R2026b/bin:$PATH

# 常用启动方式
matlab # 图形界面
matlab -desktop # 强制桌面模式
matlab -batch "..." # 无界面执行命令(脚本/定时任务)
matlab -nodesktop # 终端交互(保留 JVM)

6.2 桌面快捷方式与文件关联

  安装器只创建一个隐藏的 URL 协议处理器(mw-matlab.desktop),不会创建应用菜单启动项,也不会正确关联 .m 文件。可手动创建 ~/.local/share/applications/matlab.desktop:

1
2
3
4
5
6
7
8
9
[Desktop Entry]
Type=Application
Name=MATLAB R2026b
Exec=/home/你的用户名/.local/bin/matlab-open %f
Icon=/usr/local/MATLAB/R2026b/bin/glnxa64/cef_resources/matlab_icon.png
Terminal=false
Categories=Development;
MimeType=text/x-matlab;
StartupWMClass=MATLAB R2026b

  几个容易忽略的点:

  • Exec 使用包装脚本 matlab-open(见 §8.6)。直接传文件给 matlab 会执行脚本,而不是打开编辑器。
  • StartupWMClass 必须与运行窗口的 WM_CLASS 匹配,否则任务栏显示通用图标;该值通常带发行版号,升级 MATLAB 后需同步更新(见 §8.4)。
  • 图标路径可用 find /usr/local/MATLAB -iname "matlab_icon*" 定位。

  设置 .m 的默认打开方式:

1
2
xdg-mime default matlab.desktop text/x-matlab
update-desktop-database ~/.local/share/applications

6.3 补装工具箱(重点)

  MATLAB 安装完成后仍可随时增补工具箱,无需重装本体。继续增装(Simulink、Image Processing Toolbox、Parallel Computing Toolbox 等)有两种方法:

方法一:重跑安装器(官方推荐)

1
2
3
4
cd ~/matlab_install
xhost +SI:localuser:root
sudo -H ./install
xhost -SI:localuser:root

  要点:

  • 填同一安装路径 /usr/local/MATLAB/R2026b、同一版本 R2026b;
  • 在产品选择页只勾选要增补的工具箱(已装的 MATLAB 会被识别并跳过;若提示是否覆盖已有产品,选择跳过);
  • 运行前关闭正在运行的 MATLAB。

方法二:mpm 命令行(适合增量安装)

1
2
3
4
wget https://www.mathworks.com/mpm/glnxa64/mpm && chmod +x mpm
sudo ./mpm install --release=R2026b \
--destination=/usr/local/MATLAB/R2026b \
--products=Simulink,Image_Processing_Toolbox,...

  安装后在 MATLAB 中刷新路径:

1
2
restoredefaultpath; rehash toolboxcache; savepath;
ver % 确认新工具箱出现

⚠️ 已知问题:Ubuntu 24.04 上通过 MATLAB 内置的 Add-On Explorer 安装工具箱可能失败(MATLAB 关闭后不重启、工具箱实际未装上),装工具箱请走上述两种方式。

  空间提示:全工具集约需再 +25~30 GB,只装自己用得上的即可。若需要 GPU 计算或深度学习,其依赖的工具箱与配置方法见第七节。

6.4 版本更新

  • 小版本更新(如 R2026b Update 1):重新运行安装器,或从 https://www.mathworks.com/downloads/ 下载更新包,安装到同一目录即可。
  • 大版本升级(R2027a 等):可并存安装(/usr/local/MATLAB/R2027a),互不影响。

七、可选:GPU 计算与 CUDA 工具箱

  前面几节对纯 CPU 使用 MATLAB 已经足够。如果你的工作涉及 GPU 加速或深度学习,再继续本节;不涉及的话可以直接跳到第八节。

7.1 需要哪些工具箱

  MATLAB 的 GPU 能力由工具箱提供,默认安装并不包含:

使用场景 需要的工具箱
GPU 矩阵运算(gpuArray、gpuDevice) Parallel Computing Toolbox
深度学习训练 Deep Learning Toolbox
编译自定义 .cu 内核(mexcuda) Parallel Computing Toolbox + 本机 CUDA Toolkit

  增装方法见 §6.3,装完后在 MATLAB 中执行 ver 确认新工具箱出现。

7.2 GPU 是否被原生支持

  装好 Parallel Computing Toolbox 后,用下面的命令确认显卡是否被识别:

1
matlab -batch "try, gpuDeviceTable; catch e, disp(e.message); end"

  能列出显卡型号、Compute Capability 与显存容量,说明驱动和 MATLAB 都已正确识别显卡。若报 “compute capability 过高” 之类的错误,说明 MATLAB 版本低于 R2026a,回到 §2.2 检查版本。

7.3 系统 CUDA 与 MATLAB 的关系

  这是被问得最多的一个问题,直接看表:

使用场景 是否依赖系统 CUDA Toolkit
gpuArray、GPU 矩阵运算 ❌ 不依赖。MATLAB 自带 CUDA 运行时,只用 NVIDIA 驱动
深度学习训练(Deep Learning Toolbox) ❌ 不依赖,同上
mexcuda 编译自定义 .cu 内核 ✅ 需要本机 CUDA Toolkit,版本须匹配

  MATLAB 自带的 CUDA 运行时版本随发行版固定(R2026b 为 CUDA 13.1)。如需 mexcuda 编译自定义内核,请以 MathWorks 官方”支持的 CUDA Toolkit 版本”表为准,让本机 Toolkit 版本与之一致;多版本可共存,通过 PATH 或软链接切换。

7.4 旧版本 + Blackwell 的临时方案(仅供了解)

  若某天必须用 R2025b 或更早版本,可以这样硬撑:

1
2
parallel.gpu.enableCUDAForwardCompatibility(true)
gpuDevice()

  该模式通过驱动运行时编译(首次慢,之后有缓存),但官方声明可能产生错误结果,不作为常规方案。

八、常见问题与排错

8.1 安装日志在哪?

  • GUI 安装器日志:/tmp/mathworks_root.log(root 安装)、~/mathworks_你的用户名.log(用户安装)
  • 安装进度、产品下载、失败原因都在里面,是排错的第一站。

8.2 Wayland 相关问题

  Ubuntu 24.04 默认 Wayland 会话,MATLAB 通过 XWayland 运行,通常正常。若出现界面缩放模糊、渲染花屏等:

  • 注销后在登录界面选择 Ubuntu on Xorg 会话;
  • 或确认已安装 NVIDIA 专有驱动。

8.3 卸载

  • Linux 上卸载的主要方式就是删除安装目录:sudo rm -rf /usr/local/MATLAB/R2026b;
  • 同时清理用户配置:~/.MathWorks(账号与配置信息)、~/.matlab(用户路径与设置);
  • 若有桌面快捷方式一并删除。具体步骤见 MathWorks 官方 “Uninstall MATLAB” 文档。

8.4 任务栏显示通用图标

  原因:GNOME 依据窗口的 WM_CLASS 匹配启动项的 StartupWMClass,不一致时回退为通用图标。MATLAB 的窗口类通常形如 MATLAB R2026b(含发行版号)。

1
2
3
# 运行 MATLAB 后执行,然后点击 MATLAB 窗口
xprop WM_CLASS
# 将输出中的第二个字段(如 "MATLAB R2026b")填入 StartupWMClass

8.5 双击 .m 文件无反应 / 被其他程序打开

情况一:默认程序错误。

  .m 被识别为 text/x-matlab,但默认程序被设为只接受 mw-matlab:// 协议 URL 的隐藏项(mw-matlab.desktop),传入文件路径不会有任何反应。

1
2
3
4
xdg-mime query filetype test.m         # 应输出 text/x-matlab
xdg-mime query default text/x-matlab # 查看当前默认程序
xdg-mime default matlab.desktop text/x-matlab
update-desktop-database ~/.local/share/applications

情况二:部分 .m 被识别为 Objective-C。

  .m 同时匹配 text/x-matlab 与 text/x-objcsrc(权重相同),内容嗅探可能把 MATLAB 脚本判成后者(该类型的默认程序可能是 vim)。用用户级 MIME 规则提高权重:

1
2
3
4
5
6
7
8
9
10
mkdir -p ~/.local/share/mime/packages
cat > ~/.local/share/mime/packages/matlab-override.xml <<'EOF'
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
<mime-type type="text/x-matlab">
<glob pattern="*.m" weight="80"/>
</mime-type>
</mime-info>
EOF
update-mime-database ~/.local/share/mime

  验证:xdg-mime query filetype your_script.m → text/x-matlab。副作用是真正的 Objective-C .m 文件也会被识别为 MATLAB;删除该 XML 并重新执行 update-mime-database 即可还原。

  另外,启动项需声明 MimeType=text/x-matlab; 并用 %f 接收文件参数(见 §6.2)。

8.6 双击多个 .m 复用同一个 MATLAB 窗口

  原因:Linux 版 MATLAB 不支持 Windows / macOS 的单实例转发,每次执行 matlab 都会启动新会话。可以用 MATLAB Engine for Python 的共享会话机制间接实现:MATLAB 启动时注册共享会话,打开文件时先连接该会话调用 edit(file),连接失败才启动新实例。

① 安装引擎(纯 Python + 预编译库,独立 venv 不影响系统环境):

1
2
python3 -m venv ~/.local/share/matlab-engine/venv
~/.local/share/matlab-engine/venv/bin/pip install /usr/local/MATLAB/R2026b/extern/engines/python

  若因 MATLAB 目录只读导致 pip 失败:把 extern/engines/python/dist/matlab 复制到 venv 的 site-packages/,再写 matlab/engine/_arch.txt(四行:glnxa64、<MATLAB>/bin/glnxa64、<MATLAB>/extern/engines/python/dist/matlab/engine/glnxa64、<MATLAB>/extern/bin/glnxa64)。

② 注册共享会话(~/Documents/MATLAB/startup.m):

1
2
3
4
try
matlab.engine.shareEngine('MATLAB_Desktop');
catch
end

③ 包装脚本先连接、后启动(~/.local/bin/matlab-open):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/bash
MATLAB_BIN=/usr/local/MATLAB/R2026b/bin/matlab
ENGINE_PY="$HOME/.local/share/matlab-engine/venv/bin/python"
SHARE_NAME=MATLAB_Desktop

file=""
[ "$#" -ge 1 ] && [ -n "$1" ] && file=$(realpath "$1")

if [ -x "$ENGINE_PY" ]; then
"$ENGINE_PY" - "$SHARE_NAME" "$file" >/dev/null 2>&1 <<'PYEOF'
import sys, matlab.engine
name, path = sys.argv[1], sys.argv[2]
try:
eng = matlab.engine.connect_matlab(name)
except Exception:
sys.exit(1)
if path:
eng.edit(path, nargout=0)
else:
try:
eng.eval("commandwindow", nargout=0)
except Exception:
pass
PYEOF
[ $? -eq 0 ] && exit 0
fi

if [ -n "$file" ]; then
esc=$(printf '%s' "$file" | sed "s/'/''/g")
exec "$MATLAB_BIN" -desktop -r "edit('$esc')"
else
exec "$MATLAB_BIN" -desktop
fi

  别忘了赋予执行权限:chmod +x ~/.local/bin/matlab-open。

  几个注意事项:

  • 修改 startup.m 之前已启动的 MATLAB 不会共享,重启一次即可;此后所有实例都会注册。
  • 升级 MATLAB 后需用新版本的 extern/engines/python 重装引擎包并更新脚本路径。
  • 尚无实例运行时连续双击多个文件,仍可能各起一个实例(启动期竞争),属边界情况。
  • 空的 .m 文件会被识别为 application/x-zerosize,双击无关联属正常现象。

九、参考链接