使用GNU编译器生成独立的MEX文件,包括库

时间:2012-08-29 22:04:36

标签: matlab gcc g++ gnu mex

我编写并编译了一个MEX函数,可以从MATLAB例程调用,它在我的计算机上运行得很好。但是,当我尝试让另一台计算机运行我的例程时,它会因错误而导致该模块不存在而中断。我的MEX函数引用了GSL库和其他一些库。我想知道是否可以编译我的MEX功能,这是一个独立的。当我说独立时,我的意思是,如果我只是将MEX文件复制到另一台计算机,并且没有安装库或编译器,它仍然可以工作。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的外部库需要是静态库。然后有很多方法可以做到:

  • 在运行mex(gcc选项)时添加'-static'链接器标志。
  • 而不是使用'-lgsl'添加'/path/to/libgsl.a'(Linux)
  • 或者只是将您在mex文件中使用的库中的目标文件添加到mex命令

mex文件本身仍然只能在兼容的系统上运行(64位对32位,匹配libc版本)。

在linux上,检查你是否编译正确,输入'ldd mexfile.mexext'。您的外部库不应显示在列表中。