c++ xcode更新到2395.ld版时出现编译问题:computedAtomCount &&“分配的原子多于预期

uqzxnwby  于 2022-11-19  发布在  其他
关注(0)|答案(2)|浏览(170)

我在M1 Mac中将xcode更新为新版本,然后使用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
yc0p9oo0

yc0p9oo01#

更新:下载14.1 beta 3或更高版本以解决此问题。否则,请阅读下面的内容。

这个问题是XCode 14.0版本的问题,我已经测试并确认了这个问题。
将命令行工具版本降级到13.4,问题将得到解决。
首先从apple开发人员站点下载命令行工具并安装:https://download.developer.apple.com/Developer_Tools/Command_Line_Tools_for_Xcode_13.4/Command_Line_Tools_for_Xcode_13.4.dmg
可以使用以下命令更改版本:

sudo xcode-select --switch /Library/Developer/CommandLineTools

要检查当前选定的xcode命令行工具的版本,请使用以下命令:

pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

确保其为13.4。
GitHub上有很多关于这个问题的讨论:
https://github.com/iains/gcc-12-branch/issues/6https://github.com/Homebrew/discussions/discussions/3659

jhdbpxl9

jhdbpxl92#

还有另一种方法可以解决这个问题

#pragma GCC optimize("O2")

等到Xcode解决这个问题

相关问题