当我尝试在matlab上运行c ++代码时,我使用以下命令:
mex'-setup' (然后我选择以下两个选项: 1:/Applications/MATLAB_R2011a_Student.app/bin/gccopts.sh: 用于构建gcc MEX文件的模板选项文件
和 2:/Applications/MATLAB_R2011a_Student.app/bin/mexopts.sh: 用于通过系统ANSI编译器构建MEX文件的模板选项文件
当我选择其中一个并通过编写以下内容选择一个mex文件:mex mextest1p0.cpp时,我收到以下错误消息:
/Applications/MATLAB_R2011a_Student.app/bin/mex:line 1041:g ++ - 4.2:找不到命令
我该如何解决这个问题。注意:我看过几篇关于这个问题的帖子,我尝试了各种解决方案,但没有任何工作
答案 0 :(得分:0)
您需要安装编译器 - 即G ++(GNU C ++编译器)。在OS X上,最简单的方法是安装XCode命令行开发人员工具 - 打开XCode,转到首选项,选择下载,然后安装命令行工具。如果Matlab仍然无法找到G ++,那么您就会遇到路径问题(并告诉我们) - 解决方案可能就在您的gccopts
脚本中。
答案 1 :(得分:0)
如果你不愿意,你实际上并不需要安装所有Xcode,我相信。它占用了大量的硬盘空间。您需要(1) Apple开发者帐户(学生免费)。然后,您可以(2)转到downloads page at developer.apple.com并获取适用于您的OS X版本的命令行工具下载(10.7的最后一个版本是2013年3月 - 它位于目前下载的第三页)。为此运行安装程序。
然后,您需要(3)编辑您的mexopts.sh
文件。如果你有Xcode,你需要这样做。在Matlab命令窗口中键入以下内容:
edit([matlabroot '/bin/mexopts.sh'])
制作打开的文件的副本,以防您搞砸了。您需要根据系统和命令行工具中包含的编译器编辑文件(您可以尝试通过在Terminal.app中运行cc -v
和c++ -v
或类似版本来获取版本。查找与OS X相关的部分。您需要设置以下项目(这些是来自Matlab R2012b并且稍微有所改变,但我猜你使用的是旧版本):
CC='llvm-gcc-4.2'
或者只是
CC='gcc-4.2'
和
SDKROOT='/'
MACOSX_DEPLOYMENT_TARGET='10.7'
如果您使用的是Xcode,SDKROOT
应该是'/Developer/SDKs/MacOSX10.7.sdk'
。对于下面的C ++部分,您可能需要
CXX='llvm-g++-4.2'
或
CXX='g++-4.2'
(4)最后,保存已编辑的mexopts.sh
文件并在Matlab命令窗口中运行以下命令:
mex -setup
选择您的文件(可能按1)并选择是([y])。您现在应该可以使用mex
函数进行编译。