重啓我的開發機器後,我的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上的傳遞動態依賴關係來檢查它是否確實如此。)
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
或任何其他的env var - 據我所知 - 應強制macOS使用/usr/local/lib
作爲dylib搜索路徑。
所以我的問題是:
1)是否有在MacOS檢查工具,其庫在我的項目鏈接(可能是及物動詞)到ImageIO.framework
?
2)如何在macOS上配置dylib搜索路徑?有沒有一種工具來檢查哪些路徑被搜索以及哪個首選順序?這個問題本身可能是由於一些自制軟件問題,但我想有工具來診斷和理解它。