3

我正在尝试在我的 iOS 项目中为 Boost 1.54.0 使用 fat 文件。以下是有关命令结果文件的信息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模拟器构建而不会出错。错误的原因可能是什么?

4

2 回答 2

5

我有同样的问题并以这种方式修复它:

ranlib yourlibrary.a
于 2014-08-02T11:48:03.903 回答
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 设备”,它会显示完全相同的错误消息。

希望这会帮助你。

在此处输入图像描述

于 2014-07-04T01:21:21.123 回答