2012-03-23 63 views
5

我正在开始在我的Mac上运行OSX 10.7.3,Lion上使用从C代码(使用XCode 4.3)编译的MATLAB(R2012a)MEX文件)。我已经安装了MATLAB提供XCode patch其配置MATLAB使用新的LLVM-gcc编译器的XCode 4.2+下,但我仍然收到以下错误试图编译示例文件,使用mex timestwo.cMATLAB MEX无法使用XCode 4.3(Mac)找到标准库

/Applications/MATLAB_R2012a.app/extern/include/matrix.h:852:20: error: stdlib.h: No such file or directory 
In file included from timestwo.c:1: 
/Applications/MATLAB_R2012a.app/extern/include/mex.h:161:19: error: stdio.h: No such file or directory 

编译然后打破

mex: compile of ' "timestwo.c"' failed. 

Error using mex (line 206) 
Unable to complete successfully. 

显然,编译器无法找到标准库头目录,但我需要做什么来改变编译成功?

回答

11

啊,发现它!

MATLAB提供的模板使用/ Developer/...作为SDK位置,但在XCode4.3下更改为使用XCode.app。为了解决问题,我必须编辑我的~/.matlab/R2012a/mexopts.sh文件以将SDKROOT目录设置为新位置。

要做到这一点,搜索在mexopts.sh文件SDKROOT,并更改它读取:

SDKROOT='/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk/' 

注意,我选择了10.7 SDK b口是在狮子/ C。使用10.6,如​​果你是在Snow Leopard上

+0

感谢解决您的问题**和**张贴您的答案。它为我工作! – Tim 2012-12-21 10:54:30

+0

@Tim:关于你在[leif的回答]中的编辑(http://stackoverflow.com/questions/893657/how-do-i-calculate-r-squared-using-python-and-numpy/895063#895063)。如果您认为答案可以改进,请对其进行编辑,但请在下面添加您的代码,以便明确哪些答案/代码已被接受,并提出了哪些改进建议。或者,或者,您可以添加自己的答案。 – 2012-12-21 15:44:07

+0

@ypercube:我添加了一个错误消息,我得到了相同的情况,所以其他人可以找到它。我没有Matlab代码,我试图在OS X 10.7.5上编译一个模块(SeDuMi)并得到类似的错误。我不确定添加是否可以澄清事情,这就是为什么我将它添加到最初的问题。 – Tim 2012-12-21 15:49:01

5

我运行Mac山狮和Matlab R2012b,和下面的解决方案为我:Matlab 2012a Mex to work with Xcode 4.5 on Mountain Lion

准确地说, 我得到了以下错误:

error: stdio.h: No such file or directory

error: stdlib.h: No such file or directory

error: math.h: No such file or directory

所以我做了什么来解决这个问题:

我使用命令行工具安装的Xcode,然后通过编辑的文件“/Applications/MATLAB_R2012b.app/bin/mexopts.sh”:

改变CC从GCC-4.2至LLVM-GCC-4.2

从GCC-4.2改变CXX到LLVM-G ++ - 4.2

设置SDKROOT到 '/'

然后我在MATLAB跑 “MEX -setup” ,选择了1号,并选择了y rwrite老/Users/insertyournamehere/.matlab/R2012b/mexopts.sh

上解决了吧:)

+1

你的答案并不完全相同,因为发布答案的提问者还没有选择答案。那么你可以再把它写下来吗? – sadaf2605 2013-01-14 17:08:17

+0

我只是做:)谢谢 – fgar 2013-01-15 11:29:44

+0

通过选择'1'您覆盖您之前制作的设置。所以实际上,这只够朗姆酒'mex -setup'。 – 2015-02-12 10:09:01