我在使用xcodebuild在命令行中构建iOS动态框架时遇到此ld断言错误。
0 0x10163b342 __assert_rtn + 144
1 0x101678a3a archive::File<arm64>::makeObjectFileForMember(archive::File<arm64>::Entry const*) const + 1138
2 0x1016783e8 archive::File<arm64>::justInTimeforEachAtom(char const*, ld::File::AtomHandler&) const + 122
3 0x10168ea75 ld::tool::InputFiles::searchLibraries(char const*, bool, bool, bool, ld::File::AtomHandler&) const + 265
4 0x101697db8 ld::tool::Resolver::resolveUndefines() + 160
5 0x10169a117 ld::tool::Resolver::resolve() + 79
6 0x10163c060 main + 812
7 0x7fff9dd4c5ad start + 1
A linker snapshot was created at:
/tmp/MyKit-2016-02-31-154836.ld-snapshot
ld: Assertion failed: (memberIndex != 0), function makeObjectFileForMember, file /Library/Caches/com.apple.xbs/Sources/ld64/ld64-253.9/src/ld/parsers/archive_file.cpp, line 355.
clang: error: linker command failed with exit code 1 (use -v to see invocation)
根据archive_file.cpp源代码(http://www.opensource.apple.com/source/ld64/ld64-253.3/src/ld/parsers/archive_file.cpp),当ld加载库时,似乎存在某种符号损坏。但除此之外,我不知道如何解决这个问题。
只有当我尝试通过添加“-fembed-bitcode”编译器标志来启用bitcode来构建我的框架时,才会出现此问题。
另外,在我的ld命令中,我试图链接一些静态库,其中一个是&gt; 4.25 GB(内置bitcode),此大小超过无符号32位整数的最大值(~3.99 GB)。我以前遇到过与libtool有关的一些问题,因为无法处理大型二进制库,所以这是我的怀疑之一。
我想知道是否有人遇到类似的问题或弄清楚如何修复它?感谢
一些相关问题
Weird xCode linker error I've never seen before saying "Assertion failed"
https://github.com/SciRuby/nmatrix/issues/69
http://lists.llvm.org/pipermail/llvm-dev/2013-October/066722.html
答案 0 :(得分:5)
您想阅读错误的解释,即ld: Assertion failed: (memberIndex != 0) ...
吗? Follow this link
另外,不要担心静态库的大小。链接器将删除最终可执行文件中的所有不必要信息。请阅读here
TL; DR版本:
使用Command-Option-Shift-K
清理项目。另外,选择Window > Organizer
并切换到Projects
标签。单击Derived Data
文件夹名称右侧的右箭头,删除Derived Data
文件夹,然后重新启动XCode。
转到Build Settings
=&gt;中的project's settings
找Linking->Other linker flags
=&gt;添加-v
。这将显示导致错误的确切损坏文件(如果仍然发生)。如果您再次出现错误,请在此处发布已损坏文件的路径,我们可以从那里开始工作。
出错的原因是您的某个静态库已损坏。您可以删除4.25gb库并再次重建以查看是否存在此问题。它位于您的项目target settings -> build phases -> link binary with libraries
下。如果错误消失,那可能就是这样。在这种情况下,请注意提供lib的名称?
答案 1 :(得分:1)
只是添加到oasisweng的答案。
以下其中一项是否有帮助?: