【发布时间】:2018-01-09 22:04:49
【问题描述】:
我创建了一个依赖于另一个库的库的 mex 函数。当我执行该函数时,它会在运行时输出此错误:
Invalid MEX-file
...
Library not loaded: /usr/local/lib/libgomp.1.dylib
我的电脑上确实有这个库,但它位于usr/local/gfortran/lib
所以我尝试了这个:
setenv('DYLD_LIBRARY_PATH', '/usr/local/gfortran/lib');
但这根本不能解决问题。我正在使用 MacOS Sierra 10.12.6。如何让 MATLAB 搜索该特定文件夹?
【问题讨论】:
-
我知道你的痛苦!
DYLD_LIBRARY_PATH似乎在 MacOS 的最后几次迭代中不再有效。您需要做的是在创建 MEX 文件时设置一个衬里标志,该标志设置文件的rpath。如果今晚这个问题仍然存在,我会尝试写一个答案。 -
@CrisLuengo 这是我需要做的吗:
mex LDFLAGS='$LDFLAGS -Wl,-rpath,/usr/local/gfortran/lib' filename.cpp -
这看起来像 Linux 语法。它与 MacOS 的工作方式不同,尽管我有一段时间没有手动指定 rpaths(CMake 为我做这个)。我需要查看一些旧的 makefile 以记住确切的语法。
-
@CrisLuengo 我问是因为它不起作用。编译通过但在运行时我仍然看到错误。
-
@CrisLuengo 实际上,编译没有通过。它说“clang:错误:未知参数:'-rpath,/usr/local/gfortran/lib'”。