我正在为 OS X 构建一个通用二进制文件。我通过调用 ld 的 QT 来完成此操作。
ld 在构建 ppc 架构时抛出错误:
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 构建,一切都会构建得很好。我在 lipo 中看到 i386 和 ppc 都在那里,但显然它只喜欢 i386。我自己构建了 libcrypto.a 库,方法是构建 OpenSSL 三次并将它们与 lipo 拼接在一起。
有谁知道它如何通用,有一个 ppc 部分,但不包含 ppc 切片(无论是什么)?
最佳答案
我猜您没有正确创建通用libcrypto.a
。 lipo 的输出表明 ppc 切片的大小仅为 246 字节,而 i386/x86_64 切片每个有 2~3 兆字节。我猜您输入 lipo 的 libcrypto.a
的 ppc 版本有缺陷。
关于macos - 在 OS X 上构建通用二进制文件 - 什么是 ppc 切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480341/