2010-05-10 4 views
5

Google 검색 및 기타 스택 오버플로 질문을 활용하면 이미 많은 시간을 낭비하고 있습니다.armv7을 타겟팅 할 때 Xcode 연결 오류가 발생했습니다.

대상이 armv6 인 경우 잘 컴파일되는 것처럼 보이는 iPhone/iPad 범용 애플리케이션이 있습니다.

 
warning: building for SDK 'Device - iPhone OS 3.2' requires an armv7 architecture. 

이상하게 앱이 여전히이 경고에도 불구하고 아이 패드에 큰 실행 : 장치가 아이 패드 때 그러나, 나는이 경고를 얻을. 그러나, 나는이 일에있어서 그것이 의미하는 바를 "올바른 길"로하고 싶다. 내가하는 ARMv7에 목표 아키텍처를 전환 할 때 나는 오류를 연결 얻을 : 오류의

 
    "___restore_vfp_d8_d15_regs", referenced from: 
    *redacted* 

    "___save_vfp_d8_d15_regs", referenced from: 
    *redacted* 

ld: symbol(s) not found 

collect2: ld returned 1 exit status 

은 "편집 됨"부분은 내가 링크려고하는 정적 라이브러리에 대한 참조입니다.

다음은 온라인에서 많은 제안을 시도한 내용입니다. 이들 각각은 아무런 설명도없이 한 번 이상 제안 되었기 때문에 누구도이 문제를 이해할 수 없다고 믿습니다.

"대상을 선택하기 위해 X 코드 창의 왼쪽 상단에있는 드롭 다운 메뉴를 사용하지 마십시오. Base SDK로 설정하고 Base SDK를 iPhone OS 3.0으로 설정 한 다음 대상 장치를 원하는 대상으로 설정하십시오 (내 상황에서는 iPad, iPhone OS 3.2). "

이렇게하면 오류가 발생합니다 "-lcrt1.3.1.o에 라이브러리가 없습니다"

"GCC가 표준 라이브러리의 잘못된 버전과 연결되어 있지 않은지 확인하십시오. "

내 LIBRARY_SEARCH_PATH 이미 비어있는, 그래서 이것은 해당하지 않는 것 같습니다.

"(당신은. LIBRARY_SEARCH_PATH가에 잘못된 경로가없는 있는지 확인해야합니다) 시도 GCC 4.0이 아닌 GCC 4.2로 컴파일 "

가 나는 UIKit 헤더 파일 내의 구문 오류가 오류입니다."구문 오류 'AT_NAME'토큰 UIKIT_EXTERN @ 인터페이스의 UILocalizedIndexedCollation "라인은"전에 :.. NSObject의를 . "

또 다른 프로젝트는 같은 타겟 설정 인으로 잘 컴파일되어 내 정신을 의심하게 만듭니다. 내가 손상된 XCode 프로젝트를 처리 할 수 ​​있습니까?

누군가 실제로 일어나는 일을 알고 있고 참조가 있거나 설명하지 않는 경우 매우 감사하게 생각합니다.

건배!

+1

무엇 아키텍처 라이브러리에 결합 AT_NAME 오류 방문에 대한 자세한 내용을 알고하려면? file 명령을 사용하여이를 확인할 수 있습니다 (예 : "libfoo.a 파일". – Crufty

답변

4

ARMv7과 ARMv6 사이의 VFP는 다양한 방식으로 다릅니다. ARMv7에서는 일반적으로 NEON을 사용하는 것이 좋습니다. 문제는 정적 라이브러리가 ARMv6의 VFP에 종속된다는 것입니다. ARMv7에서 라이브러리를 컴파일하거나 ARMv6에서 전체 응용 프로그램을 유지해야합니다.

GCC 4.0으로 되 돌리는 것은 바보입니다. ARMv7 지원은 Apple이 백 포트하지 않는 한 기본적으로 존재하지 않습니다.

+0

정보를 제공해 주셔서 감사 드리며 GCC 4.0에 동의합니다. VFP의 차이로 인해 발생한 상황을 설명 할 수 있습니다. 이상하게도 라이브러리와 함께 제공되는 샘플 응용 프로그램은 제대로 컴파일되고 (심지어 같은 설정을 가지고 있습니다.) xcode 프로젝트에서 링크 오류를 발생시키는 일종의 종속성 문제 일 수 있습니다. – Tom

+0

와우 - 정말 고마워요. 나는 이것에 시간을 낭비하고 당신은 시간에서 저를 더 저장했다. – Mups

1

처럼 수행하려고합니다. 정적 라이브러리 및 기본 프로젝트의 프로젝트 설정에서 "Thumb 용으로 컴파일"을 선택 해제하여 수정했습니다.