2016-11-24 13 views
0

私のdevマシンをリブートした後、私のRustプロジェクトはmacOS上で動作を停止しました。エラーメッセージは次のとおりです。MacOSでの動的リンク:ImageIO.frameworkは間違ったパスから見えますか?

dyld: Symbol not found: __cg_jpeg_resync_to_restart 
    Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO 
    Expected in: /usr/local/lib/libJPEG.dylib 
in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO 

私は何が変更され、これを引き起こしたのか全く分かりません。この問題はDockerコンテナでうまく動作し、古いコミットが自分のコンピュータで実行することを拒否するため、コードではなく、私のリグにあるようです。もう一つは、私のプロジェクトに画像処理ライブラリを使用してはならないということです。 (そして、私は実際にそれがそうであるかどうかをチェックするために、macOSに推移的な依存関係をリストする方法を知らない)。ImageIO/System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libJPEG.dylib (compatibility version 1.0.0, current version 1.0.0)にリンクすることを明らかにする。そのファイルは確かに存在します。 /usr/local/lib/libjpeg.dylib(私のFSは大文字と小文字を区別しません)も存在しますが、自家製のファイル../Cellar/jpeg/8d/lib/libjpeg.dylibへのシンボリックリンクなので、システムライブラリはそれを使用すべきではありません。しかし、私はLD_LIBRARY_PATHや他のenv varを設定していません - 私が知る限り、macOSはをdylib検索パスとして使用するよう強制するべきです。

だから私の質問は以下のとおりです。

1)ImageIO.frameworkに私のプロジェクトのリンク(おそらく推移)でライブラリをチェックするのMacOS上のツールは、ありますか?

2)dylib検索パスはmacOSでどのように設定されていますか?どのパスが検索され、どの優先順位になっているかを調べるツールはありますか?問題は自家製の問題が原因かもしれませんが、診断と理解のためのツールが必要です。

答えて

0

私はまだ1)の良い答えは分かりません。

2)については、Appleのドキュメントから回答を得ることができます。このページには、dylibの読み込みに影響を与えるすべての環境変数とそのデフォルト値がリストされています:https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/dyld.1.html

ミステリーについては、間違ったパスがロードされた理由:私の環境には面白い変数が設定されていませんが、 (cargo run)は、バイナリを実行する前にDYLD_LIBRARY_PATHを設定します。これは、ここで説明されている動作(バグがあるかどうかわからないため)のためです:https://github.com/sgrif/pq-sys/commit/3ad9f7b77a6c4f50d5d7277bce05c836a62a4398

関連する問題