我正在为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切片(无论是什么)?
答案 0 :(得分:3)
我猜你没有正确创建通用libcrypto.a
。 lipo的输出表示ppc切片的大小仅为246字节,而i386 / x86_64切片各有2~3兆字节。我猜你喂给脂肪的libcrypto.a
的ppc版本有缺陷。