Nice programing

Xcode 링커 오류 : 아키텍처 x86_64에 비해 파일이 너무 작습니다.

nicepro 2020. 11. 3. 19:15
반응형

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 단계. "항상 사용자 경로 검색"을 다시 아니요로 설정하고 다시 빌드하여 경고를 제거합니다.


내 경우에는 깨끗한 재 구축이 아니므로 문제 해결 방법을 설명합니다
.-파일에 대한 참조 제거 (파일을 삭제하지 않음)
-파일을 프로젝트에 다시 추가하고 실행


완전한 캐시 정리없이 오류를 수정하는 빠른 방법 :

  1. 오류로 설명 된 파일 열기 (이 질문의 경우 TWRAppDelegate)
  2. cmd + A
  3. cmd + X
  4. 재 구축-실패
  5. cmd + V
  6. 재 구축-성공

참고 URL : https://stackoverflow.com/questions/14034048/xcode-linker-error-file-too-small-for-architecture-x86-64

반응형