2010-08-13 41 views
2

我正在爲OS X構建一個通用二進制文件。我通過調用ld的QT來完成這個任務。建築爲PPC架構時在OS X上構建通用二進制文件 - 什麼是ppc片?

LD拋出一個錯誤:

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

這真是奇怪,因爲當我打電話lipo -detailed info上libcrypto.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都在那裏,但顯然它只喜歡i386。我通過三次構建OpenSSL並將它們與lipo拼接在一起來構建libcrypto.a庫。

有沒有人有任何想法如何它可以是普遍的,有ppc部分,但不包含ppc切片(不管是什麼)?

回答

3

我想你沒有正確創建通用libcrypto.a。 lipo的輸出表示ppc片的大小僅爲246字節,而i386/x86_64片的大小爲2〜3兆字節。我想你餵給lipo的ppc版本libcrypto.a是有缺陷的。

+1

很棒的捕獲,我一定是在第一次做錯某種錯字的時候把它們弄到一起,然後用錯誤的文件潤脣膏。謝謝你的幫助。 – Nantucket 2010-08-13 20:26:25

+0

@Yuji:絕對是一個很棒的接觸!應該在未來的項目中幫助我 – swdev 2011-10-27 04:09:06

相關問題