将 c 程序编译成 MATLAB 格式 MAC OS X
Posted
技术标签:
【中文标题】将 c 程序编译成 MATLAB 格式 MAC OS X【英文标题】:compiling c program into MATLAB format MAC OS X 【发布时间】:2013-06-14 21:42:49 【问题描述】:感谢您对我的问题的任何帮助...
我正在尝试运行位于 http://redwood.berkeley.edu/bruno/sparsenet/ 的 sparsenet.tar.gz 文件中的此程序
我尝试遵循一个自述文件,但我似乎无法编译我的 cgf.c...
我假设我做的第一步是正确的(我很确定我能够编译 libnrfopt.a)。
但是当我在 sparsenet 目录中键入“make”时,它会显示: new-host-2:sparsenet user123$ make 墨西哥 -I./nrf -L./nrf -lnrfopt cgf.c 制作:mex:没有这样的文件或目录 make: * [cgf.mexmaci64] 错误 1
我认为这意味着我的终端无法识别 Mex,谁能指出它是如何工作的? (在你告诉我我没有做足够的搜索之前,我已经......我似乎找不到任何相关的东西......我在 Xcode 中运行我的命令行选项,GCC 工作,Mex -setup 工作)
顺便说一句,我在终端中执行此操作,而不是在 MATLAB 中。直接使用 Mex 在 matlab 中执行此操作也不适合我。
我还将 mex 扩展更改为多种选择,包括 mexmac、mexmaci64 等。
提前致谢!!
【问题讨论】:
如果您运行mexext
,它将告诉您平台上的 MEX 文件使用什么扩展名
【参考方案1】:
我能够让它工作(R2012b,OS X 10.8.4)。虽然代码很旧,但查看某些文件的日期,所以我对您遇到问题并不感到惊讶。按照自述文件,首先我使用终端在nrf
文件夹中执行make libnrfopt.a
。然后,在 Matlab 命令窗口中,我使用 cd
移动到 sparsenet
文件夹并执行(与从终端运行 make
时产生错误的命令相同):
mex -I./nrf -L./nrf -lnrfopt cgf.c
从这里我能够按照自述文件运行示例。
顺便说一句,如果您以前从未在 Matlab 中运行过mex
,您可能需要先运行mex -setup
。正如你提到的 Xcode,我假设你有你需要的编译器。
【讨论】:
【参考方案2】:好的,我想通了,在makefile中,我只需要将Mex = mex更改为我的Matlab文件夹中的mex.exec目录并将mext更改为maci64
【讨论】:
【参考方案3】:是的,我确实放了:
MEX = /Applications/MATLAB_R2012a.app/bin/mex
MEXT = mexmaci64
如果您的 mex 设置不正确,请检查 mexopts.sh 文件并更改
到 CC 选项中的 gcc-4.2
和 g++-4.2
。我有这些编译器。其他编译器
应该也可以。
如果还有更多问题,请查看:http://www.mathworks.nl/support/solutions/en/data/1-FR6LXJ/
【讨论】:
以上是关于将 c 程序编译成 MATLAB 格式 MAC OS X的主要内容,如果未能解决你的问题,请参考以下文章