我正在尝试在我的iOS项目中将胖文件用于Boost 1.54.0。以下是来自lipo -detailed_info
命令的结果文件的信息:
Fat header in: boost.framework/boost
fat_magic 0xcafebabe
nfat_arch 5
architecture armv7
cputype CPU_TYPE_ARM
cpusubtype CPU_SUBTYPE_ARM_V7
offset 108
size 2963176
align 2^2 (4)
architecture armv7s
cputype CPU_TYPE_ARM
cpusubtype CPU_SUBTYPE_ARM_V7S
offset 2963284
size 3079048
align 2^2 (4)
architecture i386
cputype CPU_TYPE_I386
cpusubtype CPU_SUBTYPE_I386_ALL
offset 8916872
size 2830880
align 2^2 (4)
architecture x86_64
cputype CPU_TYPE_X86_64
cpusubtype CPU_SUBTYPE_X86_64_ALL
offset 11747752
size 3015296
align 2^2 (4)
architecture arm64
cputype CPU_TYPE_ARM64
cpusubtype CPU_SUBTYPE_ARM64_ALL
offset 6042332
size 2874540
align 2^2 (4)
当我尝试构建真实设备(iPad Mini Retina, arm64 )时,我收到链接错误:
ld: archive has no table of contents file 'boost.framework/boost' for architecture arm64
我可以为 armv7 模拟器构建而不会出错。可能是错误的原因是什么?
答案 0 :(得分:4)
我遇到了同样的问题并以这种方式修复:
ranlib yourlibrary.a
答案 1 :(得分:0)
更新我自己的答案:
Hyndrix的回答救了我的一天!!!!!!
读完答案后,我尝试使用
ranlib src/boost-xcode5-iosx/ios//build/arm64/libboost.a
但它没有用。
所以我试过了
rablib src/boost-xcode5-iosx/ios/framework/boost.framework/boost
我得到了一些日志:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: armv7 file: /Users/src/boost-xcode5-iosx/ios/framework/boost.framework/boost(libboost_serialization_stl_port.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: armv7s file: /Users/src/boost-xcode5-iosx/ios/framework/boost.framework/boost(libboost_serialization_stl_port.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: i386 file: /Users/src/boost-xcode5-iosx/ios/framework/boost.framework/boost(libboost_serialization_stl_port.o) has no symbols
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: for architecture: x86_64 file: /Users/src/boost-xcode5-iosx/ios/framework/boost.framework/boost(libboost_serialization_stl_port.o) has no symbols
然后我重建了Xcode项目,它最终适用于iOS设备。
非常感谢你,我给了你一个投票。
约翰,你应该把答案标记为正确答案。 我认为这是因为你正在尝试为类型" iOS设备"除了真实的设备。
如果选择实际的设备或模拟器,它可以正常工作。
但如果我选择" iOS Device"它会显示完全相同的错误信息。
希望这会对你有所帮助。