5

다른 Xcode 프로젝트의 다른 정적 라이브러리에 대한 링크를 포함하는 "마스터"정적 라이브러리 대상이있는 Xcode 프로젝트가 있습니다.다른 정적 라이브러리를 포함하는 armv6 및 armv7 용 iPhone 정적 라이브러리 만들기

"Optimized (armv6 armv7)"에 대한 마스터 라이브러리 대상을 빌드 할 때 CreateUniversalBinary 단계 중 마지막 단계에서 오류가 발생합니다. 마스터 라이브러리가 포함되어있는 라이브러리의 각 .o 인 파일에 대해 다음과 같은 오류가보고됩니다 (예는 FBConnectGlobal.o 파일) : 결국

warning for architecture: armv6 same member name (FBConnectGlobal.o) 
in output file used for input files: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv6/libMTToolbox.a(FBConnectGlobal.o) 
and: /Developer_Beta/Builds/MTToolbox/MTToolbox.build/Debug-iphoneos/MTToolbox.build/Objects-normal/armv7/libMTToolbox.a(FBConnectGlobal.o) 
due to use of basename, truncation and blank padding 

, 엑스 코드 빌드가 성공했음을 알려줍니다 . 그러나 응용 프로그램 프로젝트에서 최종 정적 라이브러리를 사용하면 build (armv6)의 한 부분에서 중복 된 심볼을 찾고 빌드의 다른 부분 (armv7)에서 심볼을 누락하기 때문에 빌드되지 않습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

M은

+0

다른 라이브러리에 라이브러리를 빌드하지 마십시오. 혼동을 야기하거나 중복 된 심볼 오류가 발생하고 디버깅하기 어렵습니다 . 이 질문을 확인하십시오 : http://stackoverflow.com/questions/2300867/how-can-i-avoid-duplicate-symbol-errors-in-xcode-with-shared-static-libraries/2300873#2300873 –

+0

Carl, thanks . 아마 당신은 코멘트 대신 내 질문에 대한 답변으로 게시 할 수 있으므로 답변으로 표시 할 수 있습니다. –

답변

3

다른 라이브러리에 라이브러리를 구축하지 마십시오 - 그것은 혼란위한 조리법의 기호 오류를 복제하고 어려운 디버그 결과. 이 질문을 확인하십시오 : How can I avoid "duplicate symbol" errors in xcode with shared static libraries?

+0

여기에 동의해야합니다. 나는 이론 상으로는 무엇이 최선인지는 모르겠지만, 실제로, 나는 2 주 동안 모든 빌드 셋팅과 설정을 햇볕 아래에서 조정, 토글 링 및 cajoling하는 데 보냈다. 결국, 작동하는 유일한 방법은 모든 정적 라이브러리 (바이너리 파일 및 정적 라이브러리를 빌드하는 종속 프로젝트) 내 애플 리케이션에 의존하는 정적 라이브러리에서 제거했다. 라이브러리를 라이브러리에 연결하지 마십시오. 영웅이되지 마라. 앱에 모든 것을 직접 첨부하십시오. 그 과정에서 시간을 절약하십시오. – Prairiedogg

5

나는 그 대답을 전혀 생각하지 않습니다. 거기에 두 개의 아키텍처가 없다면 완전히 작동 할 것입니다. 링크에 제공된 예제에서 라이브러리 a, b 및 c를 하나의 라이브러리로 링크하고 링크 할 수 있습니다.

Carl이 가지고있는 문제는 라이브러리 (arm6 및 arm7)에 두 개의 다른 아키텍처가 있으며 링커가 올바르게 해결하지 못하고 있다는 것입니다.

문제점을 발견했습니다. 내가 말할 수있는 한 libtool의 버그. 해결책을 내 게시물을 참조 : 내가 찾은

https://binaryfinery.wordpress.com/2010/06/11/universal-static-library-problem-in-iphone-sdk/

+0

내 하루를 구했다! 감사! –

+0

SOB 블로그가 다운되었습니다 : (좋은 SO 답변은 링크를 게시하지 않지만 의미있는 데이터를 게시하는 이유입니다.) – Kaa

+0

죄송합니다. 7 년 후 우리는 여전히 그것에 대해 읽는다고 생각하지 않았습니다. 작동 링크는 https : // binaryfinery입니다. .wordpress.com/2010/06/11/universal-static-library-problem-in-iphone-sdk / – jamie

1

또 다른 수정이 아키텍처에 "의 ARMv6"을 설정하는 것입니다. ARCHS_STANDARD_32_BIT이 (가) armv6에서 armv6 armv7로 변경되었습니다. 위에서 설명한 libtool 버그가 더욱 심해집니다. 분명히 armv7에 최적화 된 바이너리는 생성되지 않지만 아이폰 4에서는 여전히 정상적으로 동작해야합니다.

관련 문제