1
我一直无法弄清楚为什么我的二进制文件没有加载。它是一个由MATLAB(MEX文件)加载的dylib,并链接到不同位置的不少dylib。 MATLAB告诉我它无法加载MEX文件,但我无法弄清楚它无法找到哪些依赖关系。MacOSX:哪些动态库通过二进制链接?
有没有人有任何建议如何调试这样的事情?
在Linux上,ldd
是调试此问题的最佳工具。人们一直在说otool -L
是与Linux ldd
等价的MacOS,但事实并非如此。 ldd
实际上是查找库,并告诉你哪些可以找到,以及它们在哪里找到。 otool -L
只告诉你什么库需要链接。它不检查是否在那里。它甚至没有告诉你在什么时候使用@rpath
来搜索库。
otool -l
(小写的L)为您提供了“负载命令”转储,那里你可以看到LC_RPATH
命令,建立在那里@rpath
库中搜索。但是这些都无法向我解释哪些依赖没有找到。
这是优秀的,太感谢你了! Matlab有一个启动脚本,似乎不会将环境变量传递给可执行文件,所以我将这些变量添加到脚本中。我也使用了'DYLD_PRINT_TO_FILE'。 –