2

私はOSX用のユニバーサルバイナリを構築しています。これは、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でビルドすると、すべてが正常にビルドされます。そこにi386とppcの両方があることがlipoでわかりますが、どうやらi386しか好きではないようです。私は、OpenSSLを3回ビルドし、lipoでそれらをつなぎ合わせることによって、そのlibcrypto.aライブラリを自分でビルドしました。

誰かがそれがどのように普遍的であり、ppcセクションを持っているが、ppcスライス(それが何であれ)を含まない可能性があることを知っていますか?

4

1 に答える 1

3

ユニバーサルを正しく作成しなかったと思いますlibcrypto.a。リポの出力によると、ppcスライスのサイズはわずか246バイトですが、i386 / x86_64スライスのサイズはそれぞれ2〜3メガバイトです。libcrypto.aあなたがlipoに与えたppcバージョンに欠陥があったと思います。

于 2010-08-13T20:13:53.367 に答える