Libsvm 编译mex不同平台兼容性问题 Application not supported on glnxa64 due to platform dependencies. Intended pl

Libsvm 编译mex不同平台兼容性问题 Application not supported on glnxa64 due to platform dependencies. Intended pl matlab线上算法执行报错Application not supported on glnxa64 due to platform dependencies. Intended platforms include: win64排查后发现是使用了libsvm-3.3, 而libsvm编译的时候是基于win64编译的导致出现此bug.(因为libsvm的开源代码不是matlab是C语言、C写的所以需要对其进行编译才能在matlab中对libsvm中的文件进行调用)代表系统操作系统和体系结构的 mex 文件后缀命名约定例如x86 Windows 的 .mexw32、x64 Windows 的 .mexw64、linux x86 和 x64 的 mexa32、mexa64、Mac OS x86 和 x64 的 mexmaci 和 mexmaci64编译后的 mex 代码无法保证在不同版本、操作系统或平台上兼容。唯一能保证编译后的 mex 代码兼容性的方法是在同一操作系统和平台上的同一 MATLAB 版本下运行。https://ww2.mathworks.cn/matlabcentral/answers/299183-assuring-mex-compatibility-on-different-systems解决:1.重新基于linux编译libsvm-3.3即可. 需要安装linux版本的MATLAB 2023b,不能使用MCR, 因为需要使用$MATLABDIR/bin/mex来编译libsvm.libsvm 库下载位置http://www.csie.ntu.edu.tw/~cjlin/libsvm/(1).编译进入到libsvm-3.20/matlab文件夹下更改MAKEFILE中的MATLABDIR变量改成matlab安装目录 /data/Matlab2023b打开matlab的命令行窗口/data/Matlab2023b/bin/matlabmex -setup //首先查看一下mex是否已安装cd /usr/local/libsvm-3.3/libsvm-3.3/matlab/make //执行make编译会生成libsvmread.mexw64等文件2.基于linux版本的matlab重新进行deploytool打包由于在MCR中调用构建后的matlab算法时是无法改变path的但是Windows下打包只能导入mexw Windows编译后的文件故如果要在Linux环境下运行必须在Linux上进行deploytool打包导入mexa才行。已编译的可执行文件无法在运行时更改其路径。您需要将路径添加到编译时要查看的位置列表中或者如果您使用的是 mcc则需要使用 -a 选项或者您需要在编译之前添加路径(您应该在尝试构建可执行文件时将文件添加到您的文件中source files)MATLAB Runtime 实例中的 MATLAB 路径是固定的无法更改。要更改这些路径您必须先在 MATLAB 中对其进行自定义。