在 matlab 中使用库(gcc)和编译 mex 时出错
Posted
技术标签:
【中文标题】在 matlab 中使用库(gcc)和编译 mex 时出错【英文标题】:use library (gcc) in matlab and error with compile of mex 【发布时间】:2014-11-30 13:32:15 【问题描述】:我正在使用 Mac OSX (yosemite V 10.10.1) 并在其上运行 MATLAB 2014a。
我想在 MATLAB 上使用 SPAM 库(J. Mairal 的稀疏建模软件),为此我必须安装 XCode6.1(具有 gcc)。首先我在命令窗口中输入mex -setup
,结果如下所示:
mex -setup
MEX configured to use 'Xcode with Clang' for C language compilation.
Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements. In the near future
you will be required to update your code to utilize the
new API. You can find more information about this at:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html.
To choose a different language, select one from the following:
mex -setup C++
mex -setup FORTRAN
然后我在 SPAM 库中运行 compile.m
文件,突然我看到一个错误:
add_flag =
-mmacosx-version-min=10.6
Warning: Directory already exists.
> In compile at 144
compilation of: -I./linalg/ -I./decomp/ -I./prox/ -I./dictLearn/ dictLearn/mex/mexArchetypalAnalysis.cpp
Building with 'Xcode Clang++'.
clang: warning: argument unused during compilation: '-fopenmp'
Error using mex
ld: warning: directory not found for option '-L/usr/lib/gcc/x86_64-linux-gnu/4.8/'
ld: library not found for -lgomp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Error in compile (line 439)
mex(args:);
我不明白该怎么做。请帮帮我!
【问题讨论】:
我也有同样的问题。你找到解决办法了吗? 【参考方案1】:看来实际错误发生在与预编译库的链接点。 2个问题如下:
显然包含在compile.m
文件中的编译代码看起来像是打算用 gcc 编译的(它试图包含由 GCC 安装的文件,甚至可能是特定于 linux 的文件,你确定它是OSX 兼容的工具箱?),但该错误强烈表明您实际上是在使用 clang 编译它 - 您将需要更改编译器(简单)或重写 compile.m
(不太容易)。
找不到代码需要安装才能正确链接的库之一。在 OSX 上,我认为这个文件应该被称为 libgomp.dylib
(任何 Mac 爱好者都想确认这一点?)。如果您的计算机上有它,那么它不在 clang 正在查找的目录中。您可以通过从终端运行 find / | grep libgomp.dylib
来确认已安装该库 - 如果存在,您可以将其添加到编译器参数中compile.m
使用 -I /DIRECTORY_HOLDING_LIBRARY
语法。
修复 1. 也完全有可能修复 2. - 我从未尝试过使用垃圾邮件
【讨论】:
以上是关于在 matlab 中使用库(gcc)和编译 mex 时出错的主要内容,如果未能解决你的问题,请参考以下文章
在 64 位 Windows 7 机器上使用 GCC 作为 MATLAB 2014a 的默认 MEX 编译器
MATLAB + Mex + OpenCV:链接和编译正确,但在运行时找不到库