编译Matlab生成的C源代码,在Linux平台上创建Linux MEX

xj3cbfub  于 2022-12-27  发布在  Matlab
关注(0)|答案(1)|浏览(260)

我有一个Windows Matlab R2020A,能够为我的Matlab函数生成C源代码。但是,我需要在Linux平台上运行一个MEX文件(为了速度),该平台安装了Matlab(没有编码器),没有办法安装它(甚至是试用版)。
请提供在Linux(Ubuntu)系统上编译这个Matlab生成的C代码的步骤。我猜它可以用gcc完成。我在网上找不到清晰的描述,因为这个过程看起来非常复杂,因为需要给予gcc的命令行参数很模糊(我很少编译C代码)。

z9gpfhce

z9gpfhce1#

请注意,如果您需要MEX文件,使用MATLAB编码器应用程序生成C代码是不够的。MEX文件必须包含mexFunction函数,该函数不是由编码器应用程序生成的。
作为第一步,我将确保您的编译器是MATLAB支持的MEX文件的创建。您可以在Linux here上找到支持的编译器。然后我将检查编译器是否设置为Matlab使用它,如here所示。最后,我将看一看Mathworks自己提供的一些示例:here
一旦C代码(带有mexFunction)准备就绪,您可以使用mex命令编译它,并在Linux平台上使用它,而无需或只需进行最小的调整,这取决于您对mex.h中定义的函数的依赖程度(如果您想要生成MEX文件,则C文件必须导入该文件头)。
您需要mexFunction为Matlab提供的接口,以便能够与编译后的函数交换输入和输出。(可能在其他C文件中定义),并像通常在C中所做的那样从mexFunction中调用它们。基本上,您可以在C中创建自己的库,然后通过专用的mexFunction在Matlab中使用它们。
mex.h还提供了将C数据结构“转换”为Matlab数据结构的API(例如,数组、单元格数组等,全部通过mxArray类型)。
有一段学习曲线,主要花在理解如何在标准C和Matlab之间来回转换数据上,但这当然值得你花时间。(例如仅在绝对必要时切换到mxArray类型),您最终可以获得可用于标准C程序和Matlab应用程序的函数库

相关问题