我正在尝试使用mex编译matlab程序。我面临以下错误,并想知道您是否有任何建议。我已在/usr/local/opt/mpfr
安装了最新版本的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:line 1326:15075 Abort trap: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
答案 0 :(得分: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或'!'生成的过程 功能。您可以使用
来检索使用setenv设置的任何值 GETENV(NAME)。
答案 1 :(得分:1)
尝试重新安装gcc
及其mpfr2
包,例如:
brew reinstall gcc48 mpfr2
另外,请确保您没有覆盖启动shell脚本中的任何DYLD_LIBRARY_PATH
,DYLD_FALLBACK_LIBRARY_PATH
或DYLD_FRAMEWORK_PATH
变量(例如~/.bash_profile
)。