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'。 –