문제
아래와 같은 식의 에러가 발생한다면 이 케이스에 해당한다.
Undefined symbols for architecture x86_64: "__TFSs15_arrayForceCastU___FGSaQ__GSaQ0__", referenced from: __TFC15SRChocoDemo_OSX15SRWindowManager9processesfS0_FT_GSaGSQCSo20NSRunningApplication__ in SRWindowManager.o __TFC15SRChocoDemo_OSX15SRWindowManager15windowProcessesfS0_FT_GSaGSqCSo20NSRunningApplication__ in SRWindowManager.o __TF15SRChocoDemo_OSX9launchAppFTSSGSaSS__GSQCSo6NSTask_ in SROtherApp.o "__TFSs21_arrayConditionalCastU___FGSaQ__GSqGSaQ0___", referenced from: __TFV15SRChocoDemo_OSX8SRRegexp4findfS0_FSSGSqGSaCSo20NSTextCheckingResult__ in SRRegexp.o "__TFSs26_forceBridgeFromObjectiveCU__FTPSs9AnyObject_MQ__Q_", referenced from: __TFCSo6NSDateg14dateComponentsT4yearSi5monthSi3daySi4hourSi6minuteSi6secondSi_ in NSDateExtensions.o __TFCSo6NSDateg17UTCDateComponentsT4yearSi5monthSi3daySi4hourSi6minuteSi6secondSi_ in NSDateExtensions.o __TFCSo6NSDateg7weekdaySi in NSDateExtensions.o __TFCSo6NSDateg12countOfWeeksSi in NSDateExtensions.o __TFCSo6NSDateg11weekOfMonthSi in NSDateExtensions.o __TFCSo6NSDate16generateWithYearfMS_FTSi5monthSi3daySi4hourSi6minuteSi6secondSi_GSqS__ in NSDateExtensions.o __TFC15SRChocoDemo_OSX15SRWindowManager15windowProcessesfS0_FT_GSaGSqCSo20NSRunningApplication__ in SRWindowManager.o ... "__TFSsoi1oUSs17_RawOptionSetType_USs21BitwiseOperationsTypeSs9Equatable__FTQ_Q__Q_", referenced from: __TFCSo6NSDateg14dateComponentsT4yearSi5monthSi3daySi4hourSi6minuteSi6secondSi_ in NSDateExtensions.o __TFCSo6NSDateg17UTCDateComponentsT4yearSi5monthSi3daySi4hourSi6minuteSi6secondSi_ in NSDateExtensions.o __TFC15SRChocoDemo_OSX10SRDatetimes4dateGSqCSo6NSDate_ in SRDatetime.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)에러가 좀 길어서 무서운데, 결론적으로 링크 단계에서 특정 심볼을 찾지 못 하는 오류이다.
원인
정확한 원인은 모르지만, Beta 5 혹은 그 이전 버전과 비교해서 Beta 6의 DerivedData가 무언가 바뀐 것 같다. 그래서 링크 단계에서 오류가 발생하는 것으로 추정된다.
참고로 DerivedData 는 Preferences - Locations 에서 확인 할 수 있다.
왠만하면 Default 일 테고, 그래서 사용자 명을 제외하면 아마도 똑같은 위치에 있을 것이다.
해결
위 DerivedData 디렉토리의 내용물을 몽땅 지우면 해결 될 수도 있다. 하지만 전체를 지우면 EditorKit이 계속 죽어버리는 문제가 발생 할 수도 있다. 이 문제를 해결하느라 참 애먹었다. 아시는 분은 아시겠지만 이런 에디터 킷 서비스가 죽어버리면 문법 강조 및 자동완성이 동작하지 않는 치명적인 부작용이 발생한다.
어쨌든 안전하게 해결하려면 현재 빌드 오류가 발생하는 프로젝트의 DerivedData 만을 삭제하는 것을 추천한다. 물론 위 DerivedData 디렉토리의 내부를 보면 프로젝트 이름을 확인 할 수 있으므로 어렵지는 않을 것이다.
물론 더 쉽게 지우는 방법이 제공된다. Organizer 를 열어서 Products 탭을 열어보자.
빌드 오류가 발생하는 프로젝트를 선택하면 위 스크린샷 처럼 DerivedData 위치가 보이고 우측에 Delete 버튼도 보인다. 그냥 꾹 누르면 알아줘 지워준다.
내 경우 이렇게 한 뒤에 문제가 해결되었다.
0 comments:
댓글 쓰기