【发布时间】:2016-07-20 14:34:24
【问题描述】:
我在使用 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”编译器标志启用位码来构建我的框架时,才会出现此问题。
另外,在我的 ld 命令中,我试图链接几个静态库,其中一个是 > 4.25 GB(内置位码),并且这个大小超过了无符号 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
【问题讨论】:
-
4.25 GB 静态库?!? :o