Mac环境下使用ifort安装包时报ld: library not found for -lSystem错误
报错原因
ld: library not found for -lSystem属于macOS系统库定位失败问题,-lSystem是macOS原生提供的系统基础库,不由Intel oneAPI组件自带,通常是Xcode命令行工具未正确安装、或者编译器没有读取到系统库路径导致。
解决方案
1. 修复Xcode命令行工具配置
- 若未安装Xcode命令行工具,执行命令安装:
xcode-select --install - 若已经安装,执行命令重置工具路径:
sudo xcode-select --reset
执行完成后重启终端再尝试编译,多数情况可直接解决问题。
2. 手动指定系统库路径
如果第一步操作后仍报错,需要手动在编译命令中添加系统库的查找路径:
- 先执行命令查询当前系统的SDK路径:
xcrun --show-sdk-path
命令输出通常为/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk格式,记好该路径。 - 在你原有的编译命令末尾添加参数
-L<你的SDK路径>/usr/lib,修改后的完整命令示例如下:
ifort -O3 -warn all -fpp -free -assume byterecl -heap-arrays -nogen-interface -static-intel /opt/intel/oneapi/compiler/latest/mac/compiler/include generate_inpmat.F90 -o generate_inpmat -L/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib
3. Apple Silicon芯片设备额外适配
如果你使用的是M系列芯片的Mac,需要额外在编译参数中添加-arch x86_64,强制生成x86架构二进制,ifort目前没有适配arm64架构的macOS版本,需要通过Rosetta2转译运行。
注意事项
如果上述步骤执行后仍报错,可以尝试移除编译命令中的-static-intel参数后重新编译,部分macOS版本没有提供System库的静态版本,无法完成全静态编译。
内容的提问来源于stack exchange,提问作者manish
相关产品推荐
相关产品推荐

