将 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.2g++-4.2。我有这些编译器。其他编译器 应该也可以。

如果还有更多问题,请查看:http://www.mathworks.nl/support/solutions/en/data/1-FR6LXJ/

【讨论】:

以上是关于将 c 程序编译成 MATLAB 格式 MAC OS X的主要内容,如果未能解决你的问题,请参考以下文章

Linux中,运行一个C语言程序如何运行

matlab中,如何将.txt格式文件转换成.mat格式文件

编译汇编链接加载

.elf格式内容

Matlab调用C程序

“linux”怎么编译c的源程序的?“gcc”编译命令是啥?