如何让Elementary OS上的Matlab识别gcc/g++ 4.9作为默认编译器
解决Matlab无法识别gcc/g++ 4.9的问题(Elementary OS)
我之前在Linux环境下折腾Matlab编译器兼容问题时,碰到过和你完全一样的情况——系统自动装高版本gcc,卸了之后Matlab还是不认4.9版本。下面是我亲测有效的几个解决办法,你可以挨个试试:
方法一:手动指定编译器版本(最稳妥)
- 先确认gcc-4.9和g++-4.9已经正确安装,打开终端执行:
如果没装,先执行gcc-4.9 --version g++-4.9 --versionsudo apt install gcc-4.9 g++-4.9完成安装。 - 启动Matlab,在命令行窗口依次输入:
这时候会弹出编译器选择界面,如果列表里有gcc-4.9,直接选它就行。要是没出现,就往下看方法二。mex -setup C mex -setup C++
方法二:修改Matlab编译器配置文件
如果Matlab没自动检测到gcc-4.9,我们可以手动修改配置文件强制指定:
- 找到你的Matlab安装目录下的编译器配置文件夹,路径一般是:
把/usr/local/MATLAB/R20XXx/bin/glnxa64/mexopts/R20XXx替换成你的Matlab版本号(比如R2020a)。 - 复制一份默认的gcc配置文件并改名:
sudo cp /usr/local/MATLAB/R20XXx/bin/glnxa64/mexopts/gcc_glnxa64.xml /usr/local/MATLAB/R20XXx/bin/glnxa64/mexopts/gcc49_glnxa64.xml - 编辑这个新配置文件,把里面所有的
gcc替换成gcc-4.9,g++替换成g++-4.9,确保所有路径和命令都指向4.9版本。 - 回到Matlab,执行命令手动加载这个配置:
完成后Matlab就会默认用gcc-4.9编译了。mex -setup C /usr/local/MATLAB/R20XXx/bin/glnxa64/mexopts/gcc49_glnxa64.xml mex -setup C++ /usr/local/MATLAB/R20XXx/bin/glnxa64/mexopts/gcc49_glnxa64.xml
方法三:临时修改系统默认gcc软链接(注意影响范围)
这个方法会把系统默认的gcc指向4.9,可能会影响其他依赖高版本gcc的程序,适合临时使用:
- 先备份当前的gcc/g++软链接:
sudo mv /usr/bin/gcc /usr/bin/gcc.bak sudo mv /usr/bin/g++ /usr/bin/g++.bak - 创建指向gcc-4.9的新软链接:
sudo ln -s /usr/bin/gcc-4.9 /usr/bin/gcc sudo ln -s /usr/bin/g++-4.9 /usr/bin/g++ - 重启Matlab,执行
mex -setup,此时应该能直接识别到gcc-4.9了。 - 用完之后如果需要恢复系统默认gcc,执行:
sudo mv /usr/bin/gcc.bak /usr/bin/gcc sudo mv /usr/bin/g++.bak /usr/bin/g++
额外注意事项
- 确认你的Matlab版本官方支持gcc-4.9,不同版本的Matlab对编译器版本的要求不一样,别白折腾。
- 修改Matlab配置文件时,记得用
sudo获取编辑权限,不然可能保存不了。
内容的提问来源于stack exchange,提问作者Jerry Worger
相关产品推荐
相关产品推荐

