You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

M1 Mac升级Xcode至2395版本后,make编译C++遇ld断言失败问题

M1 Mac升级Xcode 2395后make编译C++触发ld断言错误的解决方案

在M1芯片的Mac设备上升级Xcode至2395版本后,使用make工具编译C++代码时会触发链接器断言错误,错误日志如下:

0  0x1010c81a0  __assert_rtn + 140
1  0x100f4fa8c  mach_o::relocatable::Parser<arm64>::parse(mach_o::relocatable::ParserOptions const&) + 4536
2  0x100f21d38  mach_o::relocatable::Parser<arm64>::parse(unsigned char const*, unsigned long long, char const*, long, ld::File::Ordinal, mach_o::relocatable::ParserOptions const&) + 148
3  0x100f8a4ac  ld::tool::InputFiles::makeFile(Options::FileInfo const&, bool) + 1468
4  0x100f8d360  ___ZN2ld4tool10InputFilesC2ER7Options_block_invoke + 56
5  0x1893941f4  _dispatch_client_callout2 + 20
6  0x1893a7954  _dispatch_apply_invoke + 224
7  0x1893941b4  _dispatch_client_callout + 20
8  0x1893a5a04  _dispatch_root_queue_drain + 680
9  0x1893a6104  _dispatch_worker_thread2 + 164
10  0x189554324  _pthread_wqthread + 228
A linker snapshot was created at:
    /tmp/smr_dense_SL-2022-09-14-165143.ld-snapshot
ld: Assertion failed: (_file->_atomsArrayCount == computedAtomCount && "more atoms allocated than expected"), function parse, file macho_relocatable_file.cpp, line 2061.
collect2: error: ld returned 1 exit status
make: *** [smr_dense_SL] Error 1

这个错误源于链接器ld解析mach-o可重定位文件时的原子计数不匹配,属于新版本Xcode链接器的兼容性问题,或是旧编译产物、架构不兼容导致的,可尝试以下解决方法:

  • 清理旧编译产物:执行make clean清除所有目标文件和中间产物,再重新执行make编译,避免旧文件与新版本链接器冲突
  • 明确指定编译架构:在Makefile的编译和链接选项中添加-arch arm64,确保所有目标文件都为arm64架构,避免混合架构触发链接器断言
  • 更新Xcode命令行工具:运行xcode-select --install更新命令行工具,保证其与Xcode主版本完全同步
  • 检查第三方依赖:如果项目使用了预编译的第三方库,确认这些库是针对arm64架构编译且适配当前Xcode版本的,替换为兼容版本
  • 临时降级Xcode:若上述方法均无效,可暂时降级到之前能正常编译的Xcode版本,等待Apple修复该链接器bug

内容的提问来源于stack exchange,提问作者xuezou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:55:29