開発マシンを再起動した後、Rust プロジェクトが macOS で実行されなくなりました。エラーメッセージは次のとおりです。
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 コンテナーで正常に動作し、古いコミットがコンピューターでの実行を拒否しているためです。もう 1 つのことは、私のプロジェクトでは画像処理ライブラリを使用してはならないということです。(そして、macOS で推移的な動的依存関係を一覧表示して、実際にそうであるかどうかを確認する方法がわかりません。)
otool -L /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
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
知る限り、macOSに/usr/local/lib
dylib検索パスとして使用するように強制する必要がある環境変数を設定したり、他の環境変数を設定したりしていません。
だから私の質問は:
1) macOS に、プロジェクト内のどのライブラリが (おそらく推移的に) にリンクされているかを確認するツールはありImageIO.framework
ますか?
2) macOS で dylib 検索パスはどのように構成されていますか? どのパスが検索され、どの優先順位で検索されるかを確認するツールはありますか? 問題自体は Homebrew の問題に起因する可能性がありますが、それを診断して理解するためのツールが必要です。