Ich konnte nicht herausfinden, warum meine Binärdatei nicht geladen wird. Es ist eine Dylib, die von MATLAB (MEX-Datei) geladen wird, und verlinkt zu einigen Dylibs an verschiedenen Orten. MATLAB sagt mir, dass es die MEX-Datei nicht laden kann, aber ich kann nicht herausfinden, welche seiner Abhängigkeiten es nicht finden kann.MacOSX: Welche dynamischen Bibliotheken sind durch Binärdateien verbunden?
Hat jemand irgendwelche Vorschläge, wie man so etwas debuggen kann?
Unter Linux ist ldd
das perfekte Tool, um dieses Problem zu beheben. Die Leute sagen immer wieder, dass otool -L
das MacOS ist, das dem Linux ldd
entspricht, aber das stimmt nicht. ldd
sucht tatsächlich nach den Bibliotheken und sagt Ihnen, welche gefunden werden können und wo sie gefunden wurden. otool -L
sagt Ihnen nur, welche Bibliotheken benötigt werden, um zu verknüpfen. Es bemüht sich nicht zu überprüfen, ob sie da sind. Sie erfahren nicht einmal, wo nach Bibliotheken gesucht wird, wenn sie @rpath
verwenden.
otool -l
(kleines L) gibt Ihnen einen Dump der „load-Befehle“, dort können Sie die LC_RPATH
Befehle sehen, die festlegen, wo @rpath
Bibliotheken gesucht werden. Aber diese konnten mir nicht erklären, welche Abhängigkeit nicht gefunden wird.
Das ist ausgezeichnet, vielen Dank! Matlab hat ein Boot-Skript, das Umgebungsvariablen nicht an die ausführbare Datei weitergibt, also habe ich diese Variablen zum Skript hinzugefügt. Ich habe auch 'DYLD_PRINT_TO_FILE' verwendet. –