在 Linux资源库 公众号中下载安装 Matlab 2022a 版本
将crack压缩包提取到此处,双加iso挂载进行安装。安装方法详见公众号。

1. 安装过程中可能遇到的问题
1.1. 挂载失败解决方法
根据报错修改挂载点修复
sudo ntfsfix /dev/loop7

参考:
完美解决Ubuntu磁盘/硬盘挂载出错_ubuntu error mounting-CSDN博客
1.2. 记录 Linux 下Matlab 2022a 安装秘钥
50874-33247-14209-37962-45495-25133-28159-33348-18070-60881-29843-35694-31780-18077-36759-35464-51270-19436-54668-35284-27811-01134-26918-26782-54088
1.3. 文件替换
Matlab 安装目录下,搜索库 libmwlmgrimpl.so,用 Crack 中的同名文件替换即可

由于网上很多教程只给出安装过程,不保证软件能够正常使用!本文主要检查Matlab 2022a是否可以正常运行和使用功能。
以下是使用时的常见问题和解决方法。
2. 复制粘贴的快捷键失效
预设中,改为Windows默认集

参考:
Ubuntu下安装MATLAB的一些问题:快捷键与中文_matlab无法输入汉字_输出啊靓仔的博客-CSDN博客
3. 检查 Matlab 是否识别显卡信息与支持硬件加速
Matlab 命令行中输入
info = rendererinfo(gca)
以下是正常结果,gca会新建一个axes对象。说明Matlab识别到了显卡,支持硬件加速。可以跳过接下来的步骤。

如果不通过(会报低级图形错误,或者命令行直接卡死,且无法使用plot相关绘图功能)。
可以禁用硬件加速,临时使用软件加速来启动(Matlab 将不会使用 GPU 资源,一般对Simulink 数值计算影响不大)。
通常,禁用后可以正常使用绘图功能。
./matlab -nosoftwareopengl
如果仍想使用硬件加速,请先检查关于中有没有独立显卡信息。看不见独显,很可能是显卡驱动安装有问题,或者可以尝试在 nvidia-settings 中将电源设置从自动改为高性能。
不同电脑显卡型号不同,需要自行摸索。

参考:
Matlab 2021a遇到绘图低级错误_matlab 遇到了低级的图形错误,可能绘制不正确。_ccyNWPU的博客-CSDN博客
Ubuntu 18.04配置prime-select切换/关闭独立显卡 – 乌拉诺斯 – 博客园
如何在Linux上为MATLAB选择硬件OpenGL渲染 | 那些遇到过的问题
4. 报错 canberra-gtk-module 库加载错误
Matlab 需要调用 gtk-2.0+ 的 canberra 动态链接库,但是 Matlab 无法找到 /usr/lib/libcanberra-gtk-module.so。

安装 gtk-2.0 动态库
sudo apt-get install libcanberra-gtk-module

建立软链接
sudo ln -s /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so /usr/lib/libcanberra-gtk-module.so
可以确认软连接建立成功,确保 Matlab 能够通过该软链接找到实际 gtk2.0 的安装位置

不再报错

如果软链接失效,需要先删除无效的软连接,找到 gtk2.0 正确安装路径,重新链接。例如
sudo rm /usr/lib/libcanberra-gtk-module.so
sudo apt install mlocate locate libcanberra-gtk-module

5. Simulink 闪退
终端一般会报错

此问题最早在2015年12月份被上报,问题是因为glibc中的bug导致,并且在2021年8月份的2.34版本glibc中彻底修复,但此版本glibc目前只默认安装在RHEL 9 beta和Ubuntu 21.10 (Impish Indri)。因此,直接使用Ubuntu 21.10之后版本理论上可以直接解决该问题,但是注意21.10是一个短期版本已经停止支持,而22.04只能使用ROS 2。Ubuntu20.04的生命周期在2030年8月才结束,在Ubuntu 20.04下,官方给出的一个解决方案是给glibc打一个补丁。

参考:
Ubuntu 21.10停止支持,Canonical推荐用户升至Ubuntu 22.04 LTS
解决方法:
-
1.安装docker
具体可参考 Install Docker Engine on Ubuntu。网络问题可以使用魔法,也可以使用阿里云镜像来安装。
-
2.按照自己的系统编译对应的matlab 补丁包
下载代码并解压
git clone https://github.com/mathworks/build-glibc-bz-19329-patch.git
进入文件夹 build-glibc-bz19329-patch,在终端中打开
准备编译,根据自己的系统平台执行对应的Docker指令
如果系统为ubuntu 20.04,使用 ubuntu:20.04 和 ubuntu:focal(发行版代号)都可以,那么:
sudo DOCKER_BUILDKIT=1 docker build --build-arg DIST_BASE=ubuntu --build-arg DIST_TAG=focal --output type=local,dest=. .
查看当前系统发行版代号
在终端中执行以上指令(注意有些 docker 没有加入用户组下,需要 sudo)开始编译,会花一些时间~
编译过程
编译结束,得到一堆deb可执行文件
-
3.安装
先安装依赖包,防止报错
sudo apt --fix-broken install
批量安装,注意需要在deb文件所在的build文件夹下,终端输入
sudo dpkg -i *.deb
安装成功后,测试Simulink及其他之前闪退的应用能否正常使用,如果可以运行,clone的文件夹可以删除。
注意,所有安装包不要删除,如果 apt update 并安装了其他软件,很可能导致系统库版本变化。Simulink可能还会闪退,这个时候可以运行之前编译好的安装包。
参考:
Why does MATLAB crash on Linux with "Inconsistency detected by ld.s…
Matlab 2021a Linux "Assertion `listp != NULL’ failed! "问题记录
Linux 下多个版本报错Assertion ‘listp != NULL’ failed! 解决方式
6. Simulink slx 模型文件无法保存
在simulink保存模型文件时,显示无效的跨设备链接(18),保存失败

Matlab的Polyspace在执行分析时会生成一些临时文件。如果分析运行缓慢或遇到磁盘空间不足等错误,以便检查临时文件。为了确定临时文件的存储位置,Polyspace按以下顺序查找这些环境变量:
- RTE_TMP_DIR:仅当希望将Polyspace临时文件存储在不同于标准临时文件夹(由TMPDIR等定义)的文件夹中时,才定义此环境变量。
- TMPDIR
- TMP
- TEMP
此路径必须是当前用户具有访问权限(用于读取和写入)的现有文件夹的绝对路径。可以使用MATLAB函数tempdir查看当前标准临时文件夹。如果定义了其中一个变量,Polyspace将使用该路径存储临时文件。如果未定义这些环境变量,Polyspace会将临时文件存储在:/Linux和Mac上的tmp使用USERPROFILE环境变量指定的文件夹、从GetWindowsDirectoryW Windows®API返回的文件夹或Windows上的Temp目录
Ubuntu系统默认定义了临时文件存储位置,但是当前用户不具有读写权限,这会导致 Simulink 无法保存 slx 文件。

解决方法一(临时):通过Matlab函数setenv设置操作系统环境变量。每次启动Matlab都要重新设置。
setenv('TMPDIR','/yourtempdir');
解决方法二(永久,推荐):
终端执行
mkdir -p "$HOME/.matlab_tmp" &&
echo 'export TMPDIR="$HOME/.matlab_tmp"' >> ~/.bashrc &&
source ~/.bashrc
注意,此时终端直接启动 Matlab, Simulink 可以保存模型文件。不要直接指定为 $HOME,这会导致大量临时文件淹没用户主目录!
如果是桌面图标启动,则必须确保运行软件所在终端为交互式Bash(bash -i -c “/path/to/matlab”),能够正确设置环境变量!例如 Exec 是 bash -i -c “/path/to/matlab”,而不是 “/path/to/matlab”
[Desktop Entry]
Name=Matlab 2022a
Type=Application
Exec=bash -i -c "/home/lxk/App/MATLAB/R2022a/bin/matlab -desktop"
Icon=/home/lxk/App/MATLAB/R2022a/bin/glnxa64/cef_resources/matlab_icon.png
Terminal=False
Comment=Scientific computing environment
参考:
https://ww2.mathworks.cn/help/codeprover/ug/storage-of-temporary-files.html?searchHighlight=tmpdir&s_tid=srchtitle_support_results_3_tmpdir
Invalid cross-device link (18) when saving a file on arch linux
ubuntu22.04,matlab问题记录_ubuntu上保存matlab文件时 无法关闭包: "无效的跨设备链接-CSDN博客
7. 快捷图标
创建 desktop 文件
cd /usr/share/applications && sudo touch Matlab.desktop
sudo gedit Matlab.desktop
输入以下内容
[Desktop Entry]
Name=Matlab 2022a
Type=Application
Exec=bash -i -c "/home/lxk/MATLAB/R2022a/bin/matlab -desktop"
Icon=/home/lxk/MATLAB/R2022a/bin/glnxa64/cef_resources/matlab_icon.png
Terminal=False
Comment=Scientific computing environment
更改四个地方,保存后在应用中已经可以看到Matlab
- Exec 软件执行文件的路径,bin文件夹下的matlab
- Icon 快捷方式图标,可以在安装目录下搜索matlab_icon
- Name 快捷方式名称
- Terminal 是否显示终端
可以右键应用图标,添加到收藏夹

参考:
ubuntu系统matlab2021a安装及设置matlab快捷方式_libmwlmgrimpl.so_Major_xx的博客-CSDN博客
8. Mex 编译环境
如果需要使用 level-2 的 s-function 可能需要安装 Matlab 的 C/C++ 编译器,不同操作系统使用不同的C/C++编译器。如果不适用 s-function 可以跳过这部分
8.1. Windows操作系统,使用MinGW(实际是一个Win版gcc)
参考:
下载链接:
8.2 Ubuntu操作系统,使用 gcc(注意版本兼容性)
官方说明:
Change Default gcc Compiler on Linux System – MATLAB & Simulink – MathWorks 中国
检查当前gcc版本

可以看到这个兼容性兼职爆杀Windows下的MinGW

Ubuntu下有编译器gcc,直接编译就好了。需要在c文件所在文件夹,mex后的文件名带后缀。
mex X.c

编译 C MEX 函数 – MATLAB & Simulink – MathWorks 中国
9. 卸载 Matlab
10. 高分辨屏幕下 Matlab 字体大小问题
高分辨屏幕下matlab显示异常,比如字体很小。目前没有很好的通用方法解决该问题。
可能有效的方法
解决Ubuntu高分屏下matlab标题栏(菜单栏)字体过小问题_maltego字太小怎么办-CSDN博客
另外一些美化插件也可能与matlab字体设置冲突。
实测Ubuntu Matlab 2022a的预设中字体大小的变更无法生效和保存,在重启后会重置,个别选项如mat文件设置也无法生效,不知道是不是BUG。这些设置改变时,matlab.prf中的行数并没有变化。