在 Ubuntu 24.04 上安装 MATLAB R2021b

文章目录

在 Ubuntu 24.04 上安装 MATLAB R2021b

MATLAB R2021b 是 2021 年发布的版本,而 Ubuntu 24.04 是 2024 年的系统。

两者差了三年,安装过程中会遇到一些兼容性问题。

本文记录完整的安装过程和踩坑经验,供遇到同样问题的朋友参考。

安装前的准备

准备好以下文件:

  • Matlab911R2021b_Lin64.iso(安装镜像)
  • license.lic(许可证文件)
  • libmwlmgrimpl.so(用于替换的库文件)

把 ISO 镜像挂载到系统:

bash 复制代码
sudo mount -o loop Matlab911R2021b_Lin64.iso /media/你的用户名/MATHWORKS_R2021B

或者直接在文件管理器里双击 ISO 文件,系统会自动挂载。

第一个坑:安装程序启动不了

进入挂载目录,运行安装程序:

bash 复制代码
cd /media/你的用户名/MATHWORKS_R2021B
sudo ./install

在 Ubuntu 24.04 上,你大概率会看到这个错误:

复制代码
terminate called after throwing an instance of 'std::runtime_error'
  what():  Failed to launch web window with error: Unable to launch the MATLABWindow application.
  The exit code was: 127
已中止 (核心已转储)

原因

MATLAB R2021b 自带了一个旧版本的 libfreetype.so.6(版本 2.10.16)。

这个库放在安装目录的 bin/glnxa64/ 下,启动时会被优先加载。

Ubuntu 24.04 的 libharfbuzz 是新版本,它调用了 freetype 的一个较新函数:

FT_Get_Color_Glyph_Layer

MATLAB 自带的旧版 freetype 没有这个函数,所以 MATLABWindow 启动失败,返回退出码 127(找不到符号)。

ldd 检查就能看出来:

bash 复制代码
ldd /media/你的用户名/MATHWORKS_R2021B/bin/glnxa64/MATLABWindow

输出里 libfreetype.so.6 指向的是 MATLAB 自带的版本,而不是系统的。

解决办法

ISO 镜像是只读的,没法直接修改。先把内容复制到硬盘上:

bash 复制代码
mkdir -p ~/matlab-installer
cp -r /media/你的用户名/MATHWORKS_R2021B/* ~/matlab-installer/
chmod u+w ~/matlab-installer/bin/glnxa64/

然后把 MATLAB 自带的 freetype 替换成系统版本:

bash 复制代码
cd ~/matlab-installer/bin/glnxa64

mv libfreetype.so.6 libfreetype.so.6.bak
mv libfreetype.so.6.16.0 libfreetype.so.6.16.0.bak

ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 libfreetype.so.6
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6.20.1 libfreetype.so.6.16.0

这样做之后,MATLAB 的动态链接器加载 libfreetype.so.6 时,会跳转到系统的 libfreetype.so.6.20.1,这个版本包含了 FT_Get_Color_Glyph_Layer,和系统的 harfbuzz 兼容。

现在再运行安装程序:

bash 复制代码
sudo ~/matlab-installer/install

安装界面应该能正常弹出了。

按照安装向导操作

安装过程和大多数软件差不多,几个关键步骤:

选择安装模式 :如果安装程序能联网,会先出现 MathWorks 登录界面。

点击右上角 "Advanced Options",选择 "I have a File Installation Key"。

如果检测不到网络,会自动进入离线模式,不用手动选。

输入 File Installation Key

用 README.txt 里提供的那串数字。

选择 License 文件 :指向 license.lic 的位置。

选择安装路径 :建议装在你有读写权限的目录下,例如:

/home/你的用户名/MATLAB/R2021b

下文用 <matlabfolder> 表示这个路径。

选择组件 :全装大约 30GB,只装 MATLAB 大约 3GB。

不需要的组件可以不勾选,能省磁盘也能加快启动。

第二个坑:MATLAB 本身也启动不了

安装完成后,先别急着高兴。还需要做一步:把安装目录里的 libmwlmgrimpl.so 替换掉(README 里有说明)。

然后试着启动 MATLAB:

bash 复制代码
<matlabfolder>/bin/matlab

你会看到和安装时一样的错误:

复制代码
terminate called after throwing an instance of 'std::runtime_error'
  what():  Failed to launch web window with error: Unable to launch the MATLABWindow application.
  The exit code was: 127

原因和安装时一模一样:安装目录下也有自带的旧版 freetype。

再做一次同样的替换:

bash 复制代码
sudo bash -c '
cd <matlabfolder>/bin/glnxa64
mv libfreetype.so.6 libfreetype.so.6.bak
mv libfreetype.so.6.16.0 libfreetype.so.6.16.0.bak
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6 libfreetype.so.6
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so.6.20.1 libfreetype.so.6.16.0
'

替换完成后,MATLAB 就能正常启动了。

第三个坑:帮助文档报 Java 异常

MATLAB 启动后,命令窗口可能反复弹出这样的错误:

复制代码
Exception in thread "AWT-EventQueue-0":
java.lang.AbstractMethodError: ice.pilots.html4.DocPaneXml.setCursorChangeable(Z)V

这是 MATLAB 自带的 ICE Browser(用来显示帮助文档的组件)和 Java 运行时之间的版本冲突。

这个问题不影响 MATLAB 的计算、画图等核心功能。只是帮助文档的显示会出问题。

如果想修复,把 ICE Browser 的 JAR 包重命名,MATLAB 会自动回退到其他方式显示帮助:

bash 复制代码
sudo bash -c '
cd <matlabfolder>/java/jar
for f in ice_browser*.jar; do
  [ -f "$f" ] && mv "$f" "${f}.bak"
done
'

也可以不折腾,直接在浏览器里看在线文档:

https://www.mathworks.com/help/matlab/

总结

在 Ubuntu 24.04 上安装 MATLAB R2021b,一共要解决三个问题:

问题 原因 解决办法
安装程序启动失败 自带 freetype 太旧,和系统 harfbuzz 不兼容 替换安装目录下的 freetype 为系统版本
MATLAB 启动失败 同上 替换安装目录下的 freetype 为系统版本
帮助文档报 Java 异常 ICE Browser 和 Java 版本冲突 重命名 ice_browser*.jar 文件

核心问题就一个:freetype 版本太旧。

替换掉之后,MATLAB R2021b 在 Ubuntu 24.04 上可以正常使用。

如果你用的是 Ubuntu 22.04,也可能遇到同样的问题,解决办法一样。

相关推荐
吴声子夜歌1 小时前
MongoDB 4.2——应用程序设计
数据库·mongodb
数字新视界1 小时前
动环监控可视化在数据中心管理中的应用与实践解析
数据库·物联网·解决方案·动环监控·大榕树
极地野狼 音乐哔哔1 小时前
数据库备份恢复的原理实践
数据库
互联网中的一颗神经元2 小时前
小白python入门 - 25. SQL 与表设计入门
数据库·python·sql
ttwuai2 小时前
AI 生成后台改数据后,操作日志别只记按钮:Go + MySQL 怎么验
数据库·人工智能·mysql·golang
KaMeidebaby2 小时前
卡梅德生物技术快报 | 核酸适配体文库测序:核酸适配体文库测序的技术原理、实验流程与数据解析
前端·网络·数据库·人工智能·算法
ClouGence2 小时前
除了 DBeaver,2026 年还有哪些好用的开源数据库管理工具?
数据库·开源
景芯SoC芯片实战3 小时前
12nm工艺下,6T-Turbo Cell的Filler到底该怎么插?
数据库·数字ic·dft·soc后端
韩楚风3 小时前
【参天引擎】一次宕机后的数据恢复,让我把 Cantian 持久化与恢复的六大机制全搞明白了
服务器·网络·数据库·分布式·mysql·架构·cantian
寒月小酒3 小时前
第五章 生成集成 和第六章 RAG评估(all-in-rag学习)
数据库·学习