将c程序编译成MATLAB格式的MAC OS X.

时间:2013-06-14 21:42:50

标签: macos matlab compilation makefile mex

对我的问题有任何帮助表示赞赏......

我正在尝试运行位于http://redwood.berkeley.edu/bruno/sparsenet/的sparsenet.tar.gz文件中的这个程序

我试着遵循README,但我似乎无法编译我的cgf.c ......

第一步我假设我做得正确(我很确定我能够编译libnrfopt.a)。

但是当我在sparsenet目录中输入“make”时,它说: new-host-2:sparsenet user123 $ make mex -I./nrf -L./nrf -lnrfopt cgf.c make:mex:没有这样的文件或目录 make: * [cgf.mexmaci64]错误1

我认为这意味着我的终端无法识别Mex,有人能指出我的工作方式吗? (在你告诉我我没有做足够的搜索之前,我有......我似乎无法找到任何相关的内容......我在Xcode中运行我的命令行选项,GCC工作,Mex -setup工作)

顺便说一句,我是在终端里做的,而不是在MATLAB里面。直接使用Mex在matlab中完成它也不适用于我。

此外,我已将mex扩展名更改为各种选项,包括mexmac,mexmaci64等。

提前致谢!!

3 个答案:

答案 0 :(得分:1)

我能够让它工作(R2012b,OS X 10.8.4)。代码是旧的,查看一些文件的日期,所以我不会感到惊讶你有问题。在自述文件之后,我首先使用终端在make libnrfopt.a文件夹中执行了nrf。然后,在Matlab命令窗口中,我使用cd移动到sparsenet文件夹并执行(当您从终端运行make时产生错误的相同命令):

mex -I./nrf -L./nrf -lnrfopt cgf.c

从这里我可以按照自述文件运行示例。

顺便说一句,如果您以前从未在Matlab中运行mex,则可能需要先运行mex -setup。正如你提到的Xcode,我假设你有你需要的编译器。

答案 1 :(得分:0)

好的我想通了,在makefile中,我只需要将Mex = mex更改为我的Matlab文件夹中的mex.exec目录并将mext更改为maci64

答案 2 :(得分:0)

是的,我确实放了:

MEX = /Applications/MATLAB_R2012a.app/bin/mex
MEXT = mexmaci64

如果您的mex设置不正常,请检查mexopts.sh文件并进行更改 CC选项中的gcc-4.2g++-4.2。我有这些编译器。其他编译器 也应该工作。

如果有更多问题仍然存在,请查看以下内容:http://www.mathworks.nl/support/solutions/en/data/1-FR6LXJ/