장치를 컴파일할 때 Apple Mach-O 링커 오류 발생
저는 방금 xcode 4.0으로 업그레이드했고 더 이상 iPhone에 배포할 수 없습니다. Apple Mach-O Linker 오류가 발생하지만 시뮬레이터에서 여전히 작동합니다.
Ld /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel normal armv7
cd /Users/yveswheeler/iParcel
setenv IPHONEOS_DEPLOYMENT_TARGET 3.2
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 -arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk -L/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -F/Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos -filelist /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel.LinkFileList -dead_strip -all_load -ObjC -lxml2 -miphoneos-version-min=3.2 -framework UIKit -framework CoreGraphics -framework QuartzCore /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a -framework AddressBook -lz.1.2.3 -framework Foundation -framework CFNetwork -framework MobileCoreServices -framework SystemConfiguration -framework MessageUI -framework AudioToolbox -o /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Intermediates/iParcel.build/Debug-iphoneos/iParcel.build/Objects-normal/armv7/iParcel
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Core.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Network.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20Style.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UI.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UICommon.a: No such file or directory
arm-apple-darwin10-g++-4.2.1: /Users/yveswheeler/Library/Developer/Xcode/DerivedData/iParcel-fkeqjcjcbbhjwhdssjptkdxzzzxh/Build/Products/Debug-iphoneos/libThree20UINavigator.a: No such file or directory
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/g++-4.2 failed with exit code 1
여기 영구적인 해결책이 있습니다.일반적으로 프로젝트를 덮어쓸 경우 이 문제가 발생할 수 있습니다.이 방법을 사용해 보십시오.
-UPDATE - Clang 오류 - Mach-O Linker 오류
경우에 따라 오류 로그 창에 .xctest 오류가 표시되어 수정
-> 프로젝트 선택
-> 이 옆(일반 탭 바로 앞)에서 프로젝트를 선택합니다.드롭다운에서 파일 테스트
-> ProjName과 같은 옵션이 하나 있습니다.테스트)
-> Host Application에서 사용자 정의가 표시된 경우에만 드롭다운에서 프로젝트를 선택합니다.
알았어!
이전 메서드가 삭제되었습니다.
저도 같은 문제가 있었는데 문제는 실수로 구현 파일에서 .h가 아닌 .m 파일을 가져온 것입니다.
방금 같은 문제에 부딪혔습니다.
솔루션(나를 위한) = 프레임워크를 확인합니다.
저의 경우 "CoreData.framework" 없이 CoreData 관련 클래스를 추가했습니다.이를 추가하면 MACH_O의 불만이 해결됩니다.
.xcodeproj가 아닌 .xcworkspace 파일을 엽니다.open .xcworkspace 파일을 반복합니다.당신의 실수는 모두 사라질 것입니다.
제목에 설명된 문제:
혹시 다른 사람들이 그 명백한 것을 놓쳤을 경우를 대비해서...
Xcode4의 새 버전을 설치하고 기존 파일을 새 프로젝트로 끌어다 놓은 후에 이 오류를 발견했습니다.파일 추가 옵션 선택:' 대화 상자에서 '대상에 추가' 확인란이 선택되지 않은 상태로 남아 있는 것을 발견하지 못했습니다.대상 > 빌드 단계 > 컴파일 소스에서 누락된 내용을 수정하여 문제를 해결했습니다.
Menu > Product > Clean, 이것이 작동하게 만든 것입니다.다른 사람들은 잘 모르겠어요.보여주기 위해 사진을 추가했습니다.
이상한 오류.저는 방금 Xcode를 청소하고 다시 시작했더니 문제가 사라졌습니다.
수정: 빌드 설정 > 비트코드 사용 > 아니요
이 대답들 중 어떤 것도 저에게 도움이 되지 않았습니다.그런 다음 Cocoapods를 다시 설치하려고 했습니다.
pod deintegrate
pod install
문제가 해결되었습니다!
문제는 XCode 4에서 종속성이 이전에 XCode 3에서와 같이 기본 프로젝트의 아키텍처 설정을 가정하지 않는다는 것입니다.저는 올바른 아키텍처를 위해 모든 의존성을 설정해야 했습니다.
저도 같은 것을 먹고 겨우 해결했습니다.
xcode 기본 설정에서 위치 탭은 빌드 위치 아래의 값을 "로 변경합니다.Place build products in locations specified by targets"
.
저는 이것에 대해 잠시 고민했고, 저의 경우에는 FREATE_SEARCH_PATHs라는 검색 경로 아래의 빌드 설정이 되었습니다.프로젝트, 대상 및 "해결된" 설정을 비교하는 것처럼 보이는 "레벨" 버튼을 선택한 것이 도움이 되었습니다.저는 제 목표 설정이 어떻게든 기본값인 "$(상속됨)"를 재정의하는 것을 보았고, 재정의된 값은 XCode가 설정을 "해결"하는 것이었습니다.이 경우 3.2 sdk를 지정한 오버라이드를 제거했을 때 링커 오류가 사라졌습니다. 최근에 4.0 이후 메소드를 호출한 클래스에 대한 몇 가지 경고가 표시되었습니다.
이러한 경고에 대해 - 메시지를 추가하기 전에는 경고를 본 적이 없습니다.최근 변경에 대한 UI 프레임워크입니다.제가 그 프레임워크를 추가했을 때 XCode가 제 목표에 오버라이드를 추가함으로써 영리한 일을 하려고 했던 것은 아닌지 의심스럽지만 확실히는 모르겠습니다.저는 어느 시점에서도 그것을 명시적으로 하지 않았습니다.예를 들어, 경고는 sdk 4.0까지 나타나지 않았던 NSURL의 URLByAppendingPathComponent 메서드에 대한 것입니다. 메시지를 추가하기 전에UI 프레임워크, 저는 그런 경고를 받은 적이 없습니다.제가 오버라이드를 제거한 이후로, 저는 더 이상 그들을 이해할 수 없습니다.
이 문제가 발생하여 가져오기 작업을 수행했습니다.QuartzCore
고쳤습니다.
CordovaLib.xcodeproj -> Build Settings에서 "Build Active Architectures Only"를 "Yes"로 변경한 것이 저에게 유용했습니다. 이전에는 앱이 시뮬레이터에서 실행되었지만 장치에서는 실행되지 않았습니다.
빌드 설정을 업데이트해야 할 수 있습니다.
XCode 4가 설치된 이전 SDK가 없을 수 있으므로 iOS 대상 버전과 프로세서 아키텍처를 확인합니다.
빌드 설정에 "Missing SDK"가 표시될 수 있습니다.그것을 적용되는 것으로 변경합니다.
저도 같은 문제가 있었습니다: .h가 프로젝트를 진행하는 동안 실수로 .m 파일을 삭제했습니다..m 파일을 복구한 후 문제가 사라졌습니다.
특정 프레임워크 검색 경로가 지정되지 않았는지 확인합니다.대상에 대한 정보로 이동하여 프레임워크 검색 경로 항목만 제거하는 경우 지정된 배포 버전에 대한 기본값을 사용해야 합니다.
저는 단지 그것을 만들기 위해 노력할 뿐입니다.category class
파일을 작성하고 이 이상한 문제를 얻었습니다.그리고 마침내..
문제를 일으키는 범주 클래스를 만드는 잘못된 방법:
New File
->Cocoa Touch
->Objective-C class
그런 다음 파일 이름을 카테고리 클래스로 수정했습니다.(즉,OriginalClass_CategoryName.h/m
OriginalClass+CategoryName.h/m
또한 파일의 내용을 수정했습니다.)
바로 여기:
New File
->Cocoa Touch
->Objective-C category
OriginalClass+CategoryName.h/m
).
오, 내가 얼마나 멍청한지!!
CoreData를 사용하는 경우 XCode를 사용하여 엔티티에 대한 NSManagedObject 하위 클래스를 생성하는 경우 각 엔티티에 대해 하나만 생성해야 합니다.
문제는 동일한 엔티티에 대해 여러 NSManagedObject 하위 클래스를 생성하고 서로 다른 폴더에 배치했다는 것입니다.
방금 모든 항목을 삭제하고 NSManagedObject 하위 클래스를 재생성했습니다.
이 문제를 해결한 이상한 것들의 목록에 추가하려면...
글로벌 헤더 파일에 const CGFloat 변수가 몇 개 있었습니다.
const NSInteger globalInteger1 = 2;
const NSInteger globalInteger2 = 3;
제가 이것들을 제거한 순간, 모든 것이 괜찮았습니다 :)
저는 같은 문제를 겪었습니다. 단지 다른 수업에서 두 개의 같은 상수를 가지고 있었기 때문입니다..h 파일이 아닌 .m 파일을 가져오는 경우에도 이 문제가 발생할 수 있습니다.
관련이 있는지는 모르겠지만, 당신이 약 3개의 20개의 도서관을 운영하고 있는 것을 보면, 당신은 그들의 웹사이트에서 이 게시물을 확인하고 싶을지도 모릅니다: http://three20.info/article/2011-03-10-Xcode4-Support .
저도 같은 문제가 있었고, 해결했습니다.저의 경우, "아키텍처" 설정이 문제를 일으켰습니다.내 프로젝트 파일인 빌드 설정 탭에서 아키텍처가 armv6로 설정되었습니다.Standard(arm v7)로 변경하여 청소 및 빌드 작업을 합니다.효과가 있었어요!
저의 경우 문제는 서로 다른 대상에서 지정된 서로 다른 아키텍처를 사용하는 것이었습니다.표준(amrv7)을 사용하여 armv6, armv7 및 cocos2d를 사용하여 애플리케이션 대상을 구축하고 있었습니다.빌드 설정으로 이동하여 아키텍처가 모든 대상에 대해 일치하는지 확인합니다.
내가 이 문제를 너무 이상하게 풀었어요!
대상 > 빌드 단계 > 이진 라이브러리 연결로 이동합니다.
모든 프레임워크를 제거하고 다시 추가합니다!
그것이 당신에게 효과가 있기를 바랍니다!
스위프트 언어의 경우...
이 오류가 발생했습니다. "ld: 파일이 너무 작습니다(length=0)..."
제 경우에는 프로젝트를 정리하고 다시 빌드합니다.
단계:-
프로젝트로 이동 -> 치료
프로젝트로 이동 -> 빌드
이게 도움이 되길..
이것은 저에게 속임수였습니다.
에 가다
상품 > 청결
Windows > 프로젝트
프로젝트를 선택하고 "Delete" 파생 데이터를 클릭합니다.
제품 > 빌드
한 가지 가능성:Xcode 4 빌드 설정에서 "Dead code stripping"을 설정합니다.
또 다른 가능성:이전에 GCC를 사용하던 일부 프레임워크에 LLVM을 사용하는 것으로 전환했을 수 있습니다.GCC(또는 LLVM GCC)로 다시 이동하면 이러한 경고가 제거될 수 있습니다.
제가 실수로 다른 파일에서 기존 상수와 같은 이름의 새 상수를 정의했는데 xCode 4.3.1.xCode를 사용하는 저에게 이 오류가 발생했습니다. xCode는 불평하지 않았지만 컴파일러는 그것을 좋아하지 않습니다.
"라이브러리 검색 경로"를 편집하여 이 오류를 해결할 수 있었습니다.
처음에 폴더를 몇 개 이동했기 때문에 해당 폴더가 삭제되었고, 라이브러리/프레임워크를 연결할 때 빌드 설정에 자동으로 추가되지만 항상 제거되는 것은 아니기 때문에 빌드 설정에 두 가지 검색 경로가 제공되었습니다.
따라서 연결된 라이브러리/프레임워크를 다른 디렉토리로 이동한 후 다시 연결하는 경우 검색 경로를 수동으로 편집해야 합니다.
라이브러리/프레임워크를 이동하기 전에 제거하면 이 문제를 피할 수 있지만, 저는 테스트하지 않았습니다.
언급URL : https://stackoverflow.com/questions/5329001/apple-mach-o-linker-error-when-compiling-for-device
'programing' 카테고리의 다른 글
Angular에서 사용자 지정 테마 팔레트를 사용하려면 어떻게 해야 합니까? (0) | 2023.05.04 |
---|---|
Angular zone 외부에서 트리거된 탐색입니다. 'ngZone.run()'을 호출하는 것을 잊으셨습니까? (0) | 2023.05.04 |
사용자 정의 사용자 컨트롤을 대화 상자로 표시하는 방법은 무엇입니까? (0) | 2023.05.04 |
xcode 활성 개발자 디렉토리 선택 오류 (0) | 2023.05.04 |
UIImageView의 UIGesture 인식기 (0) | 2023.04.29 |