2010-08-13 4 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 

이 정말 이상하다 내가 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) 

을 이상한 점은 아치 x86으로 빌드하면 모든 것이 잘됩니다. 나는 lipo와 함께 i386과 ppc가 거기에 있다는 것을 알지만, 분명히 i386 만 좋아합니다. libcrypto.a 라이브러리를 OpenSSL을 세 번 빌드하고 lipo와 함께 바느질하여 직접 구축했습니다.

누구나 보편적 일 수 있고, ppc 섹션이 있지만 ppc 슬라이스를 포함하지 않는 아이디어가 있습니까?

답변

3

유니버설 libcrypto.a을 올바르게 만들지 않았을 것 같습니다. lipo의 결과에 따르면 ppc 슬라이스의 크기는 246 바이트이고 i386/x86_64 슬라이스는 2 ~ 3 메가 바이트입니다. 내가 lipo에 먹인 libcrypto.a의 ppc 버전이 결함이 있다고 생각합니다.

+1

대단한 잡기, 내가 틀린 파일에 함께 lipo'd하고 lipo'd 처음이었던 일종의 오타를 만들었 음에 틀림 없다. 당신의 도움을 주셔서 감사합니다. – Nantucket

+0

@Yuji : 확실히 좋은 캐치! 미래의 프로젝트에서 나를 도울 것입니다. – swdev

관련 문제