파일은 보편적이지만 (세 개의 슬라이스) iOS의 정적 라이브러리에 대한 (n) ARMv7-s 슬라이스 오류가 포함되어 있지 않습니다.


403

Xcode 버전을 업그레이드 했으며 외부 정적 라이브러리를 사용할 때 다음 메시지가 나타납니다.

ld : 파일이 범용 (3 슬라이스)이지만 a (n) armv7s 슬라이스를 포함하지 않음 : 아키텍처 armv7s clang : / file / location 종료 코드 1에서 링커 명령이 실패했습니다 (호출을 보려면 -v 사용).

라이브러리 개발자가 라이브러리를 아직 업데이트하지 않은 경우이를 무시하고 라이브러리에 지원을 추가 할 수있는 방법이 있습니까?


이것은 현재로서는 좋은 해결책 인 것 같습니다 -galloway.me.uk/2012/09/hacking-up-an-armv7s-library
Rajavanya Subramaniyan

답변:


418

예를 들어 ARMv7-s 와 같은 아키텍처에 대한 지원을 제거하려면 프로젝트 -> 빌드 설정 -> "유효한 아키텍처"에서 아키텍처를 제거하십시오.

라이브러리가 업데이트 될 때까지이를 임시 솔루션으로 사용할 수 있습니다. 라이브러리가 아닌 기본 프로젝트에서 아키텍처를 제거해야합니다.

또는 디버그 구성의 "빌드 아키텍처 만"플래그를 예로 설정할 수 있습니다. 릴리스 구성의 "빌드 아키텍처 만"을 아니오로 두십시오. 사용중인 타사 라이브러리를 업그레이드해야한다는 사실을 알리기 전에 미리 알림을 받게됩니다.


11
라이브러리를 다시 컴파일 할 필요가 없습니다. 라이브러리를 사용중인 프로젝트에서이 플래그를 제거 할 수 있습니다.
Nicholas

4
armv7s 지원으로 컴파일되지 않은 오래된 앱도 실행해야하기 때문에 작동합니다. 그러나 일부 특정 최적화가 느슨해집니다. 어쨌든 이것은 임시 해결 방법이어야합니다.
니콜라스

2
보관 용 프레임 워크는 볼이 문제에 대한 업데이트 된 forums.dropbox.com/topic.php?id=90014
railwayparade

6
Valid Architectures 목록에서 armv7을 제거하면 효과가 있었지만 Architectures에서 제거했습니다. 그러나 두 경우 모두 유효한 아키텍처 목록 No architectures to compile for (ARCHS=i386, VALID_ARCHS=armv7).에 추가해야만 해결할 수있는 링커에서 얻을 수 있습니다 i386.
levigroker

6
아니요, armv7s는 iPhone 5에서 사용중인 A6 프로세서의 명령어 세트입니다. A6은 이전 버전과 호환되므로 armv7 명령어 세트를 계속 실행합니다.
니콜라스

191

대상의 빌드 설정에서 "Build Active Architecture Only"를 "Yes"로 간단히 전환했습니다. 이제 괜찮습니다!


1
@ Blasco73 당신은 당신이 최고라는 것을 알고 있습니까? 당신은해야합니다. 간다, 당신은 훌륭합니다!
thandasoru

15
이것이 어떻게 좋은 해결책이 될 수 있습니까? 그것은 오류를 제거하지만, 당신은 시장에 모든 것이 아니라 현재 아치에 대해서만 빌드를 얻을 수 있습니다 ...
esbenr

27

프로젝트의 "유효한 아키텍처"에서 armv7을 제거하여 iOS 5.1 전화의 경우이 문제에서 해제하십시오.


13

난 그냥 수정 게시 여기 이 경우에 적용됩니다 - 기본적으로, 당신이 그 그것의 ARMv7s 코드를 생각 헥스 수 있도록 외부 도서관에서 찾기 및 바꾸기 않습니다. 당신은 사용할 수 있어야 lipo는 ARMv7 하나를 / 중복, 3 정적 라이브러리로 휴식을 수정 한 후 사용lipo 다시 하여 4 개의 아키텍처 모두에 대해 새 라이브러리를 어셈블 할 수 있어야합니다.


5

iPhone 5 (ARMv7s)에 대한 Flurry 지원 어제 포스트에서 언급했듯이 Flurry는 수요일 발표 직후 새로운 iPhone 5에서 ARMv7s 프로세서를 지원하기 위해 iOS SDK 버전 작업을 시작했습니다.

작업이 완료되었으며 이제 사이트에서 SDK를 사용할 수 있음을 알려드립니다.


4

메뉴 사용 프로젝트-> 빌드 설정->

그런 다음 "유효한 아키텍처"에서 armv7을 제거하십시오. 표준을 선택한 경우 해당 표준을 삭제 한 다음 armv7을 추가하십시오.


1

누군가에게 이런 일이 발생하는 경우. 타사 코드와 함께 사용할 자체 라이브러리를 만들었습니다. 내가 그것을 제공하기 위해 구축하는 동안 실수로 iPhone 4S를 꽂은 상태로 두었으므로 Xcode는 프로젝트 설정을 따르는 대신 연결된 아키텍처에 대해서만 내 라이브러리를 만들었습니다. 연결된 장치를 모두 제거하고 라이브러리를 다시 빌드 한 후 연결하면 괜찮습니다.

도움이 되길 바랍니다.


0

제 경우에는 조금 오래된 타사 라이브러리 (XCode 5 / iOS 7에서 iOS 6 용으로 개발)에 연결하고있었습니다. 따라서 타사 라이브러리를 업데이트하고 정리 및 빌드를 수행해야했으며 이제는 성공적으로 빌드됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.