You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Linux(Ubuntu)编译Matlab生成的C代码创建Linux MEX文件的步骤

在Ubuntu Matlab(无Coder)中用gcc编译Windows生成的MEX C代码步骤

1. 配置Ubuntu环境依赖

  • 安装gcc和make工具:
    sudo apt update && sudo apt install gcc make
    
  • 打开Matlab,验证编译器可用性:
    在Matlab命令行输入 mex -setup C,确认gcc被识别为可用C编译器。如果提示未找到,检查gcc是否安装正确即可,一般无需额外配置。

2. 准备代码文件

  • 将Windows下Matlab生成的所有C源文件(.c)、头文件(.h)复制到Ubuntu的同一个本地目录(如~/mex_project)。
  • 检查代码中的路径引用:替换所有硬编码的Windows路径为Linux相对/绝对路径,确保本地头文件用#include "xxx.h"格式引用。

3. 推荐:用Matlab自带mex命令编译(避免手动处理gcc参数)

这是最简单的方式,Matlab会自动处理所有依赖和编译参数:

  • 在Matlab中切换到代码目录:
    cd ~/mex_project
    
  • 执行编译命令(替换为你的主源文件名和其他依赖源文件):
    mex -v your_main_code.c other_dependency_code.c
    
    • -v参数用于输出详细编译日志,方便排查错误。
    • 编译成功后,会生成后缀为.mexa64的MEX文件(Ubuntu x64平台)。

4. 手动用gcc编译(仅当需要自定义参数时)

如果必须直接调用gcc,按以下步骤操作:

4.1 获取Matlab编译参数

在Matlab命令行执行:

mex -v -n your_main_code.c

该命令会输出mex工具实际调用gcc的完整参数列表,复制下来备用。

4.2 手动执行编译链接命令

将复制的参数替换为实际的源文件名,示例命令如下(需根据你的Matlab安装路径调整):

# 编译生成目标文件
gcc -c -fPIC -DMATLAB_MEX_FILE -I/usr/local/MATLAB/R2020a/extern/include -I/usr/local/MATLAB/R2020a/simulink/include your_main_code.c other_dependency_code.c

# 链接生成MEX文件
gcc -shared -Wl,--version-script,/usr/local/MATLAB/R2020a/extern/lib/glnxa64/mexFunction.map -Wl,-rpath-link,/usr/local/MATLAB/R2020a/bin/glnxa64 -o your_mex_file.mexa64 your_main_code.o other_dependency_code.o -L/usr/local/MATLAB/R2020a/extern/lib/glnxa64 -lmex -lmx -lmat -lm

关键参数说明:

  • -fPIC:生成位置无关代码,Linux共享库(MEX本质是共享库)的强制要求
  • -DMATLAB_MEX_FILE:定义宏,告知代码当前编译目标为MEX文件
  • -I:添加Matlab头文件搜索路径
  • -shared:指定生成共享库
  • -L:添加Matlab库文件搜索路径,-lmex/-lmx/-lmat/-lm链接Matlab核心库

5. 测试MEX文件

在Matlab中直接调用生成的.mexa64文件,参数与原Matlab函数一致,验证运行结果是否符合预期。

内容的提问来源于stack exchange,提问作者SheppLogan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 09:16:14