2

我正在为 OS X 构建一个通用二进制文件。我正在通过调用 ld 的 QT 来执行此操作。

ld 在为 ppc 架构构建时抛出错误:

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

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

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 构建,一切都很好。我在 lipo 那里看到 i386 和 ppc 都在那里,但显然它只喜欢 i386。我自己构建了 libcrypto.a 库,构建了三次 OpenSSL 并将它们与 lipo 拼接在一起。

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

4

1 回答 1

3

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

于 2010-08-13T20:13:53.367 回答