如何配置lld链接时跳过架构不兼容库仅输出警告而非报错
LLD 架构不兼容库跳过配置方法
- LLD 针对苹果Mach-O平台的
ld64.lld链接器提供了对应参数,可实现和macOS自带ld一致的、自动跳过架构不兼容静态库、仅输出警告不终止构建的效果。 - 所需参数为
-no_arch_errors_fatal:- 直接调用
ld64.lld时,将该参数追加到链接命令的参数列表中即可 - 通过clang/clang++间接调用链接器(cmake、CocoaPods等绝大多数构建场景默认使用该调用方式)时,需要通过clang的参数透传语法传入,写法为
-Wl,-no_arch_errors_fatal
- 直接调用
- 版本要求:该参数从LLVM 15版本的lld开始正式提供,若使用低于15的旧版本lld,无对应配置项可调整该行为,需升级lld版本,或在构建流程中提前过滤掉与当前目标架构不匹配的静态库路径,避免将错误架构的库文件传入链接器。
- 常见场景配置方法:
- CocoaPods项目:可在Podfile的
post_install钩子中,给对应target的OTHER_LDFLAGS配置项追加-Wl,-no_arch_errors_fatal,无需修改第三方依赖的原有构建脚本 - CMake项目:可通过
target_link_options命令给构建目标追加参数,示例写法:target_link_options(your_build_target PRIVATE "-Wl,-no_arch_errors_fatal")
- CocoaPods项目:可在Podfile的
配置生效后,构建arm64架构目标时传入的x86_64版本静态库会被自动忽略,仅输出架构不匹配的警告,不会中断构建流程,行为与macOS系统自带ld完全对齐。
内容的提问来源于stack exchange,提问作者isudfv
相关产品推荐
相关产品推荐

