库胖文件不起作用

时间:2014-06-04 16:09:52

标签: ios boost lipo

我正在尝试在我的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 模拟器构建而不会出错。可能是错误的原因是什么?

2 个答案:

答案 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"它会显示完全相同的错误信息。

希望这会对你有所帮助。

enter image description here