在 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 小时前
Go Channel 详解:并发通信的正确姿势
前端·数据库·git
guygg881 小时前
二维弹塑性有限元分析(von Mises 等向硬化)— MATLAB 实现
开发语言·人工智能·matlab
Volunteer Technology1 小时前
Flink Table API与SQL(二)
大数据·数据库·flink
杨云龙UP1 小时前
Spotlight 接入 Oracle 数据库监控操作指南 2026-06-16
数据库·oracle·性能监控·预警·阈值·spotlight·瓶颈分析
正在走向自律2 小时前
KingbaseES MySQL模式深度解析,从语法兼容到迁移的全栈指南
数据库·数据库架构·kingbasees·电科金仓
叫我:松哥2 小时前
基于Python flask的中学可控智能命题系统设计与实现,整合遗传算法、DeepSeek 大模型及数据库技术构建一体化应用
数据库·人工智能·python·算法·机器学习·flask·遗传算法
阿维的博客日记2 小时前
Hippo4j 线程池监控接入方法
数据库·hippo4j
Clang's Blog2 小时前
Ubuntu(20.04/22.04/24.04)国内环境一键安装 Docker、JDK17 和 Maven
ubuntu·docker·maven
izcll2 小时前
ubuntu系统安装软件的方法
linux·运维·ubuntu