Xcode 링커 오류 : 아키텍처 x86_64에 비해 파일이 너무 작습니다.
Xcode에서 응용 프로그램을 개발 중입니다.
빌드하려고 할 때 다음 오류가 발생합니다.
ld: in /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o, file too small for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
아무도 무엇이 잘못되었는지 알고 있습니까?
@ martin-baulig의 답변 훔치기 :
전체 재 구축 / 청소를 시도하십시오. 이전 빌드가 비정상적으로 중단되어 TWRAppDelegate.o 파일이 손상되거나 크기가 0 일 수 있습니다.
일반적으로 문제의 파일에 공백 (해당 문제에 대한 임의의 문자 일 수 있음)을 추가하고 제거하고 저장합니다. 깨끗한 빌드보다 쉽고 빠릅니다.
rm -rf /Users/hostname/Library/Developer/Xcode/DerivedData
터미널 앱에서 cmd를 실행하여이 파일을 제거하십시오.
rm /Users/theodore/Library/Developer/Xcode/DerivedData/Tower-bkpdifuqssebjdgurzmtirbxejnn/Build/Intermediates/Tower.build/Debug/Tower.build/Objects-normal/x86_64/TWRAppDelegate.o
깨끗한 프로젝트를 빌드하는 데 시간이 너무 오래 걸릴 수 있으므로 캐시에서 손상된 파일에 대한 액세스 권한이있는 사용자에게는 더 짧은 방법이 있습니다.
- 파일 삭제 (참조 제거)
- 프로젝트 빌드
- 파일 다시 삽입
- 프로젝트 빌드
정식 버전이므로 파일을 찾는 데 문제가 없습니다.
- Xcode 프로젝트 탐색기에서 파일 찾기
- 파일을 마우스 오른쪽 버튼으로 클릭하고 "파인더에 표시"를 누릅니다 (파일이있는 위치에서 파인더가 열립니다).
- Xcode에서 파일을 선택하고 백 스페이스 키를 누른 다음 "참조 제거"를 클릭하십시오.
- 프로젝트 빌드 (실패하지만 완료 될 때까지 기다림)
- 파인더에서 방금 삭제 한 위치로 파일을 드래그하여 다시 삽입합니다.
- 프로젝트 빌드 (지금 작동해야 함)
TWRAppDelegate.o 파일을 삭제하고 빌드를 계속할 수 있습니다. 오류 메시지에 언급 된 전체 경로를 복사하여 터미널의 'rm'명령 뒤에 붙여 넣습니다. 정리 / 재 구축, 파생 데이터 삭제, 프로젝트에서 파일 추가 / 제거 등을 할 필요가 없습니다.
이 문제를 자동으로 수정하려면 Build Script Phase
추가 할 수 있습니다. Xcode-> 프로젝트-> 대상-> 빌드 단계-> +-> 새 실행 스크립트 단계로 이동
이름을 바꾸고 단계 Xcode Link Fix
위로 이동하십시오 Compile Sources
. 이것을 스크립트 본문에 붙여 넣으십시오.
# Legacy build system
legacy_dir=`dirname "$LD_DEPENDENCY_INFO_FILE"`
find "$legacy_dir" -size 0 | while read -d $'\n' file; do
rm "$file"
done
# New build system
find "$OBJECT_FILE_DIR_normal" -size 0 | while read -d $'\n' file; do
rm "$file"
done
이 스크립트는 크기가 0 인 개체 파일을 확인하고 제거하므로 다음 단계에서 컴파일이 완료되면 성공합니다.
많은 경우 모든 앱 대상에 대해이 스크립트를 추가해야합니다.
이 스크립트는 실행하는 데 ~ 0.1 초가 걸리며 전체 프로젝트를 다시 빌드하지 않아도됩니다.
1 단계. 프로젝트> 빌드 설정> 검색 경로로 이동합니다.
2 단계. "항상 사용자 경로 검색"을 예로 설정합니다.
3 단계. 프로젝트 빌드 (경고가 표시되지만 프로젝트가 빌드됩니다.)
4 단계. "항상 사용자 경로 검색"을 다시 아니요로 설정하고 다시 빌드하여 경고를 제거합니다.
내 경우에는 깨끗한 재 구축이 아니므로 문제 해결 방법을 설명합니다
.-파일에 대한 참조 제거 (파일을 삭제하지 않음)
-파일을 프로젝트에 다시 추가하고 실행
완전한 캐시 정리없이 오류를 수정하는 빠른 방법 :
- 오류로 설명 된 파일 열기 (이 질문의 경우
TWRAppDelegate
) - cmd + A
- cmd + X
- 재 구축-실패
- cmd + V
- 재 구축-성공
'Nice programing' 카테고리의 다른 글
MySQL은 기존 테이블 열 정렬 (0) | 2020.11.03 |
---|---|
gzip으로 압축 된 스크립트의 크기를 어떻게 추정 할 수 있습니까? (0) | 2020.11.03 |
angular.js에서 오른쪽 클릭 이벤트를 어떻게 처리합니까? (0) | 2020.11.03 |
PHPStorm에서 Ruby 구문 강조 표시를 얻을 수 있습니까? (0) | 2020.11.03 |
Bootstrap 3의 수평 양식 내에 중첩 된 인라인 양식 (0) | 2020.11.03 |