[ios] 아키텍처 arm64에 대한 정의되지 않은 기호

CocoaPods에서 파일을 가져올 때마다 Apple Mach-O Linker 오류가 발생합니다.

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

내가 사용하는 다양한 포드에 대해이 중 약 12 ​​개를 얻습니다.

XCode 5를 사용하여 iPhone 5S를 빌드하려고합니다.

나는 여기에서 다양한 솔루션을 시도했지만 아직 작동 할 솔루션이 없습니다.

이 Apple Mach-O Linker 오류를 어떻게 해결합니까?


흥미로운 또 다른 경고를 찾았습니다.

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

file was built for archive which is not the architecture being linked (arm64):~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a



답변

아키텍처유효한 아키텍처 가 모두 올바른 경우 다음 과 같이 $(inherited)포드에서 생성 된 링커 플래그를 기타 링커 플래그 에 추가하는 추가 여부를 확인할 수 있습니다.
여기에 이미지 설명을 입력하십시오


답변

문제는 cocoapod가 arm64 아키텍처 용으로 빌드되지 않았으므로 빌드 할 때 연결할 수 없다는 것입니다. 패키지가 업데이트되고 해당 아키텍처를 사용할 때까지 해당 패키지를 사용할 수 없습니다. 프로젝트-> 대상 (프로젝트 이름)-> 빌드 설정으로 이동하여 아키텍처를 표준 아키텍처 (armv7, armv7s)로 변경하고 유효한 아키텍처를 armv7, armv7s로 변경하여 링커 오류를 해결할 수 있습니다.

그러나 이는 64 비트 프로세서의 성능을 최대한 활용할 수 없다는 것을 의미합니다. 당신은 당신이 5 대를 위해 건설하고 있다고 말했기 때문에 이것이 필요한 이유가있을 수 있습니다. 어떤 이유로 든 그 힘이 절대적으로 필요하고 (아마 게임을 만들고있을 때) 필사적으로 해당 파일이 필요한 경우 풀 요청을 제출 한 다음 풀 필드에서 동일한 필드를 arm64로 설정하여 arm64로 프로젝트를 다시 컴파일 할 수 있습니다 오픈 소스 프로젝트. 그러나 이러한 파일이 64 비트 호환 가능해야하지 않으면 현재로서는 약간의 잔인한 것처럼 보입니다.

편집 : 일부 사람들은 또한이 문제를 해결하기 위해 Build For Active Architectures를 YES로 설정해야한다고보고했습니다.

2014-04-28 현재 설정은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


답변

나는 다음을 설정 하여이 문제를 해결했다.

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64


답변

구현 AVPictureInPictureController과 동일 / 유사한 문제 가 발생하여 프로젝트에서 AVKit 프레임 워크를 연결하지 않았다는 것이 문제였습니다 .

오류 메시지는 다음과 같습니다.

Undefined symbols for architecture armv7:
   "_OBJC_CLASS_$_AVPictureInPictureController", referenced from:
       objc-class-ref in yourTarget.a(yourObject.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

해결책:

  1. 프로젝트로 이동
  2. 대상을 선택하십시오
  3. 그런 다음 빌드 단계 로 이동 하십시오.
  4. 라이브러리가있는 오픈 링크 바이너리
  5. 마지막으로, 단지 추가 + AVKit의 프레임 워크 / 다른 프레임 워크를 .

바라건대 이것은 다른 사람이 비슷한 문제를 겪을 수 있기를 바랍니다.


답변

나는 또한 같은 문제가 발생, 위의 방법은 작동하지 않습니다. 실수로 다음 디렉토리의 파일을 삭제했습니다.

폴더 배치 :

~ / 라이브러리 / 개발자 / Xcode / DerivedData /

여기에 이미지 설명을 입력하십시오


답변

설정 아키텍처하는 ARMv7 armv7s , 활성 아키텍처 구축NO를 포함하여 프로젝트의 모든 대상에 대해, 모든 일 에서 포드


답변

오른쪽의 대상 멤버 자격에서 선택한 구현 파일을 확인하여 수정했습니다. 이것은 확장 기능, 즉 사용자 정의 키보드를 다룰 때 특히 유용합니다.

대상 회원