尝试在 MatLab 中编译 C mex 文件
Posted
技术标签:
【中文标题】尝试在 MatLab 中编译 C mex 文件【英文标题】:Trying to Compile a C mex file in MatLab 【发布时间】:2013-11-10 08:23:25 【问题描述】:嘿,尝试在 MatLab 中编译一个 C 文件,但我收到了这个错误,我正在尝试理解它。非常感谢任何和所有指导。
>> mex BDS_unpack_mex5.c
xcrun: error: SDK "macosx10.7" cannot be located
clang: warning: no such sysroot directory: '-mmacosx-version-min=10.7'
BDS_unpack_mex5.c:17:10: fatal error: 'math.h' file not found
#include <math.h>
^
1 error generated.
mex: compile of ' "BDS_unpack_mex5.c"' failed.
Error using mex (line 206)
Unable to complete successfully.
【问题讨论】:
您是否设置了mex
编译器?试试>> mex -setup
嘿 Shai,感谢您的建议,奇怪的是,我认为这与 MatLab 外部编译器部分中设置的 OSX 版本有关。一旦我将最初读取 10.7 并下载 Xcode 的所有值更改为 10.8,一切都运行良好。
@PiersonSargent 您在哪里将 10.7 的值更改为 10.8?因为我使用的是 10.9,所以可能会出现同样的问题...
我必须四处寻找它,它是一个存在于 MatLab 文件中的 mexopts(mex 选项)文件。试试看你是否无法运行搜索。
【参考方案1】:
为了解决这个编译here或者一般的问题,我理解是这样的
$ sed -ie 's@10.7@10.9@g' /Applications/MATLAB_R2013b.app/bin/mexopts.sh
在运行之前检查你的 Sed 风格。根据comment,您需要再次编译 Xcode。等待升级...
可能相关的问题
How to ignore `mexopts.sh` when compiling MEX files for Matlab?【讨论】:
【参考方案2】:问题存在于 OSX 版本中,MatLab 认为我已经给出了新的 OSX 版本(小牛队),我选择安装更新。我最终找到了包含 mex 选项的文件,更改了 OSX 值以读取当前版本的 OSX,我下载了当前版本的 Xcode,瞧一切正常,我可以运行我的
mex BDS_unpack_mex5.c
这让我可以编译 mex 文件,使用里面的函数并度过美好的一天 =D
【讨论】:
以上是关于尝试在 MatLab 中编译 C mex 文件的主要内容,如果未能解决你的问题,请参考以下文章