编译报错的信息是:
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来看, 它是修改动态库名的
很惭愧, 对于动态库我一无所知, 需要了解