在使用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相关的问题,无法处理大型二进制库,因此这是我怀疑的原因之一。
我想知道是否有人遇到过类似的问题或找到了解决方法?谢谢
几个相关问题
https://github.com/SciRuby/nmatrix/issues/69
http://lists.llvm.org/pipermail/llvm-dev/2013-October/066722.html