4

我正在尝试使用 mex 编译一个 matlab 程序。我面临以下错误,想知道您是否有任何建议。我已经安装了最新版本的 mpfr,/usr/local/opt/mpfr但它仍然在选择/usr/local/opt/mpfr2.

错误如下:

dyld:库未加载:/usr/local/opt/mpfr2/lib/libmpfr.1.dylib 引用自:/usr/local/Cellar/gcc48/4.8.1/gcc/libexec/gcc/x86_64-apple-darwin12。 5.0/4.8.1/cc1plus 原因:库版本不兼容:cc1plus需要4.0.0或更高版本,但libmpfr.1.dylib提供3.0.0版本 g++-4.8:内部编译器错误:跟踪/BPT 陷阱:5(程序 cc1plus)/Applications/MATLAB_R2012b.app/bin/mex:第 1326 行:15075 中止陷阱:6 /usr/local/bin/g++-4.8 -c - I/Applications/MATLAB_R2012b.app/extern/include -I/Applications/MATLAB_R2012b.app/simulink/include -DMATLAB_MEX_FILE -fno-common -fexceptions -arch x86_64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX .platform/Developer/SDKs/MacOSX10.8.sdk/ -mmacosx-version-min=10.7 -DMX_COMPAT_32 -O2 -DNDEBUG "face-detection/src/resizef.cc" -o face-detection/private/resizef.o

4

2 回答 2

2

在编译之前尝试运行此命令:

setenv('DYLD_LIBRARY_PATH','')

我试图编译其他东西(不是 Matlab 程序)并收到同样的错误。相同的命令在 bash 中工作,所以我检查了环境变量,发现 Matlab 的 DYLD_LIBRARY_PATH 与 bash 的 DYLD_LIBRARY_PATH 不同。bash DYLD_LIBRARY_PATH 没有定义,所以我在 Matlab 中将它设置为空,它修复了路径错误。

Matlab 的 setenv 文档:


使用 setenv 分配给变量的值由使用 MATLAB SYSTEM、UNIX、DOS 或“!”生成的任何进程拾取。
功能。您可以使用
GETENV(NAME) 检索使用 setenv 设置的任何值。

于 2013-12-12T22:15:09.433 回答
1

尝试重新安装gcc及其mpfr2软件包,例如:

brew reinstall gcc48 mpfr2

还要确保您没有覆盖启动 shell 脚本中的任何DYLD_LIBRARY_PATHDYLD_FALLBACK_LIBRARY_PATH变量DYLD_FRAMEWORK_PATH(例如~/.bash_profile)。

于 2016-11-25T19:23:19.703 回答