xcode 5.1의 Arm64 아키텍처
새로운 XCode 5.1에서 arm64는 빌드 할 표준 아키텍처 중 하나가되었습니다.
그러나 현재 내 프로젝트에는이 새로운 아키텍처를 아직 지원하지 않는 라이브러리 (예 : Google AdMob)가 포함되어 있습니다. 이제 링커 오류가 발생합니다.
ld: symbol(s) not found for architecture arm64
예를 들어 Google AdMob 6.8.0은 arm64를 지원한다고 하지만 arm64 가 아니면 실제로 확인할 수 cputype (16777228) cpusubtype (0)
없나요? (파일 명령 줄 도구를 통해 발견)
libGoogleAdMobAds.a: Mach-O universal binary with 5 architectures
libGoogleAdMobAds.a (for architecture armv7): current ar archive random library
libGoogleAdMobAds.a (for architecture armv7s): current ar archive random library
libGoogleAdMobAds.a (for architecture i386): current ar archive random library
libGoogleAdMobAds.a (for architecture x86_64): current ar archive random library
libGoogleAdMobAds.a (for architecture cputype (16777228) cpusubtype (0)): current ar archive random library
이것에 대해 갈 방법이 있습니까?
당분간 arm64 를 제거하는 것은 그리 어렵지 않습니다 . 당신이해야 할 일은 :
타겟 의 빌드 설정을 편집 합니다 .
Architectures
드롭 다운을 열어서 값을 변경하고 기타 ...를 클릭 한 다음 선택하고 값이있는 행을 삭제하고 값이있는$(ARCHS_STANDARD)
두 행을 추가합니다.armv7
또는armv7s
(또는 nschum$(ARCHS_STANDARD_32_BIT)
에서 언급 한대로 ) 팝업을 닫습니다.값을 편집하고
Valid Architectures
그arm64
일부만 제거하면 됩니다.작업 공간이나 프로젝트 내에있을 수있는 모든 중첩 된 프로젝트에 대해 수행하십시오.
참고 : 이것은 해결책이 아닙니다. 현재 문제를 완화하기위한 몇 가지 단계 일뿐입니다. 종속성 프로젝트를 계속 팔로우하여 arm64 호환성과 함께 제공되는시기를 확인하고 이러한 설정의 변경을 최대한 빨리 되 돌리십시오.
행운을 빕니다
Xcode 5.1부터 $ (ARCHS_STANDARD)에는 이제 arm64 (armv7 및 armv7s 포함)가 포함되지만 Xcode 5.02에서는 $ (ARCHS_STANDARD)에만 armv7 및 armv7s 만 포함됩니다.
Xcode 5.1의 경우
$ (ARCHS_STANDARD) = armv7 armv7s arm64
$ (ARCHS_STANDARD_32_BIT) = armv7 armv7s
따라서 반드시 64 비트로 컴파일해야하는 경우 포함 된 모든 라이브러리에 64 비트 슬라이스가 있는지 확인해야합니다. 아직 64 비트를 지원하지 않는 경우 대신 32 비트로 컴파일해야합니다.
그러나 두 경우 모두 대상 빌드 설정에서 Achitectures와 Valid Achitectures가 모두 동일하게 설정되고 일치하는지 확인해야합니다 (아래 이미지 참조). 따라서 $ (ARCHS_STANDARD)로 둘 다 시도 할 수 있으며 컴파일되지 않으면 이론적으로 오류를 제거하고 작업 프로젝트를 컴파일하는 $ (ARCHS_STANDARD_32_BIT)로 둘 다 시도 할 수 있습니다.
-
arm64 armv7s 및 armv7을 사용하는 64 비트의 경우 다음과 같습니다.
-
또는 armv7s 및 armv7 만있는 32 비트 (arm64 제외)의 경우 다음과 같이하십시오.
대상에 대한 빌드 설정에서 "유효한 아키텍처"를 지원하는 아키텍처로만 변경하십시오. 이 경우 armv7 및 armv7s 일 가능성이 있습니다.
Cocoapods를 사용하는 경우 Pods 프로젝트 내의 모든 대상에 대해이를 변경하고 모든 스키마에 대해 해당 대상의 "Build Active Architecture Only"를 "No"로 설정하십시오.
cocoapods 대상에서 64 비트 빌드 아키텍처를 자동으로 제거하기위한 podfile의 작은 변경 사항은 http://cameronspickert.com/2014/01/20/remove-the-arm64-architecture-from-cocoapods-targets에 자세히 설명되어 있습니다.
XCode 5.1 에서 아키텍처를 $ (ARCHS_STANDARD_32_BIT) 로 설정하면 작동합니다. 유효한 아키텍처에서 arm64 를 제거 할 필요가 없습니다 .
아키텍처는 빌드 할 실제 아키텍처를 지정하고 유효한 아키텍처 (상위 집합을 지정하는)의 arm64 항목을 무시합니다. Apple이 곧이 문제를 해결하기를 바랍니다.
나는 같은 오류가 있었다. 새 버전의 Google AdMob SDK 6.8.0을 다운로드하면 문제가 해결되었습니다. 링크 : https://developers.google.com/mobile-ads-sdk/download#downloadios
따라서 arm64 아키텍처를 비활성화 할 필요가 없습니다.
어떤 답변도 나를 위해 일 하지 않았습니다 .
마침내 Xcode 5.1 외에 이전 Xcode 5.0.2를 설치하는 내 앱을 제출했습니다.
이 버전의 Xcode를 사용하여 오류없이 앱을 보관했습니다. 여기
에서 Xcode 5.0.2 의 이전 버전을 다운로드 하십시오 (Apple ID로 로그인해야 함).
참고 URL : https://stackoverflow.com/questions/22323039/arm64-architecture-in-xcode-5-1
'Nice programing' 카테고리의 다른 글
문자열에 오류 유형이 지정되지 않는 이유는 무엇입니까? (0) | 2020.11.23 |
---|---|
배경 이미지 위에 CSS 그라데이션 사용 (0) | 2020.11.23 |
WebSockets ping / pong, TCP keepalive가 아닌 이유는 무엇입니까? (0) | 2020.11.23 |
쉽고 간단하게 Java에서 LRU 캐시 사용 (0) | 2020.11.23 |
MySQL select 문에서 조건문을 어떻게 작성합니까? (0) | 2020.11.23 |