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)
해결책:
- 프로젝트로 이동
- 대상을 선택하십시오
- 그런 다음 빌드 단계 로 이동 하십시오.
- 라이브러리가있는 오픈 링크 바이너리
- 마지막으로, 단지 추가 + AVKit의 프레임 워크 / 다른 프레임 워크를 .
바라건대 이것은 다른 사람이 비슷한 문제를 겪을 수 있기를 바랍니다.