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