2017-08-02 11 views
1

バイナリがロードされていない理由を知ることができませんでした。これはMATLAB(MEX-ファイル)によって読み込まれたdylibで、別の場所にあるかなりの数のdylibにリンクしています。 MATLABはMEXファイルを読み込むことができないと伝えますが、依存関係のどれが見つからないのか分かりません。MacOSX:どのダイナミックライブラリがバイナリでリンクされていますか?

誰もこのようなものをデバッグする方法の提案はありますか?

Linuxの場合、lddはこの問題をデバッグするのに最適なツールです。人々はotool -LがLinux lddに相当するMacOSだと言っていますが、これは当てはまりません。 lddは実際にライブラリを探し、見つけたものと見つかったものを教えてくれます。 otool -Lは、リンクするために必要なライブラリのみを示します。彼らがそこにいるかどうかを確認する努力はしません。 @rpathを使ってライブラリを検索する場所は教えてくれません。

otool -l(小文字のL)があり、あなたが@rpathライブラリが検索される場所を確立LC_RPATHコマンドを、見ることができ、あなたの「ロード・コマンド」のダンプを提供します。しかし、これらは依存性が見つからないことを私に説明することができませんでした。

答えて

1

は、MATLABを実行する前に、これらの環境変数を設定してみてください:

export DYLD_PRINT_LIBRARIES=1 
export DYLD_PRINT_LIBRARIES_POST_LAUNCH=1 
export DYLD_PRINT_RPATHS=1 

実行man dyldより多くの可能性のために。

はまた、このようなだけでmatlabコマンドの変数を設定することができます。

DYLD_PRINT_LIBRARIES=1 DYLD_PRINT_LIBRARIES_POST_LAUNCH=1 DYLD_PRINT_RPATHS=1 matlab 
+0

これは素晴らしいです、ありがとうございました! Matlabには、環境変数を実行可能ファイルに渡さないようなブートスクリプトがあるので、これらの変数をスクリプトに追加しました。私は 'DYLD_PRINT_TO_FILE'も使用しました。 –

関連する問題