【装机】Ubuntu 20.04 完美安装 Matlab 2022a 方法

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

  1. Exec 软件执行文件的路径,bin文件夹下的matlab
  2. Icon 快捷方式图标,可以在安装目录下搜索matlab_icon
  3. Name 快捷方式名称
  4. 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)

参考:

MinGW简介_whatday的博客-CSDN博客

下载链接:

Compilers

8.2 Ubuntu操作系统,使用 gcc(注意版本兼容性)

官方说明:

Compilers

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

Uninstall MATLAB

10. 高分辨屏幕下 Matlab 字体大小问题

高分辨屏幕下matlab显示异常,比如字体很小。目前没有很好的通用方法解决该问题。

可能有效的方法

解决Ubuntu高分屏下matlab标题栏(菜单栏)字体过小问题_maltego字太小怎么办-CSDN博客

另外一些美化插件也可能与matlab字体设置冲突。

实测Ubuntu Matlab 2022a的预设中字体大小的变更无法生效和保存,在重启后会重置,个别选项如mat文件设置也无法生效,不知道是不是BUG。这些设置改变时,matlab.prf中的行数并没有变化。

字体大小(未完全解决)

中英字体

上一篇
下一篇