mac上的GNU gcc報錯:dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.22.dylib的解決辦法


編譯報錯的信息是:

dyld: Library not loaded: /usr/local/opt/isl/lib/libisl.22.dylib
  Referenced from: /usr/local/Cellar/gcc/10.2.0/libexec/gcc/x86_64-apple-darwin19/10.2.0/cc1
  Reason: image not found
gcc-10: internal compiler error: Abort trap: 6 signal terminated program cc1
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://github.com/Homebrew/homebrew-core/issues> for instructions.

參考了這個回答后, 我的一些做法和猜想:

  • ls /usr/local/opt/isl/lib/libisl.22.dylib, 發現這個文件不存在, 同時在/usr/local/opt/isl/lib/這個目錄下, 有這些文件:

    $ ls /usr/local/opt/isl/lib/
    libisl.23.dylib  libisl.a         libisl.dylib     pkgconfig/  
    

    因此猜測loader使用了libisl.22.dylib, 但它實際上該使用的是libisl.23.dylib或者libisl.dylib

  • 上述回答告訴我們, 修改的命令應該為

    install_name_tool -change '/usr/local/opt/isl/lib/libisl.22.dylib' /usr/local/opt/isl/lib/libisl.dylib /usr/local/Cellar/gcc/10.2.0/libexec/gcc/x86_64-apple-darwin19/10.2.0/cc1
    

    其中最后一個目錄是從報錯信息中獲取的
    執行這個命令以后, 可以正常編譯了

  • 再說這個install_name_tool是干啥的, 從man page來看, 它是修改動態庫名的

很慚愧, 對於動態庫我一無所知, 需要了解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM