在OS X上构建通用二进制文件 - 什么是ppc切片?

时间:2010-08-13 20:08:45

标签: macos universal-binary

我正在为OS X构建一个通用二进制文件。我是通过调用ld的QT来完成的。

在构建ppc架构时,

ld会抛出错误:

in ../MyPathToLib/libcrypto.a, file is universal but not does contain a(n) ppc slice for architecture ppc

这真的很奇怪,因为当我在libcrypto.a上调用lipo -detailed info时,我得到以下输出:

lipo libcrypto.a -detailed_info
Fat header in: libcrypto.a
fat_magic 0xcafebabe
nfat_arch 3
architecture ppc
    cputype CPU_TYPE_POWERPC
    cpusubtype CPU_SUBTYPE_POWERPC_ALL
    offset 68
    size 246
    align 2^0 (1)
architecture x86_64
    cputype CPU_TYPE_X86_64
    cpusubtype CPU_SUBTYPE_X86_64_ALL
    offset 316
    size 3251896
    align 2^2 (4)
architecture i386
    cputype CPU_TYPE_I386
    cpusubtype CPU_SUBTYPE_I386_ALL
    offset 3252212
    size 2556576
    align 2^2 (4)

关于它的奇怪之处在于,如果我使用arch x86构建,一切都很好。我看到那里的脂肪,i386和ppc都在那里,但显然它只喜欢i386。我自己构建了libcrypto.a库,通过构建OpenSSL三次并将它们与lipo拼接在一起。

有没有人知道它是如何通用的,有一个ppc部分,但不包含ppc切片(无论是什么)?

1 个答案:

答案 0 :(得分:3)

我猜你没有正确创建通用libcrypto.a。 lipo的输出表示ppc切片的大小仅为246字节,而i386 / x86_64切片各有2~3兆字节。我猜你喂给脂肪的libcrypto.a的ppc版本有缺陷。