2014-11-17 1 views
4

clang을 사용하여 Mac OS X에서 프로젝트를 빌드하려고하는데 gcc로 빌드 된 ld: unknown option: --no-undefined으로 연결하는 단계에서 실패합니다. 이 옵션에 해당하는 clang은 무엇입니까? (제발, clcc 대신 gcc를 사용할 것을 권유하지 마십시오.)clang의 --no-undefined gcc 플래그와 동일한 기능은 무엇입니까?

더 일반적인 질문은 gcc와 clang (링커) 옵션 차이점 사이에 어떤 종류의 "매핑"을 찾을 수있는 리소스가 있는지 여부입니다. ?

감사합니다.

+2

그건 링커 옵션입니다. '-Wl, ...'을 사용하고 링커 ('ld')의 문서를 읽으십시오. gcc를 사용하면'-v'를 추가하여 링커에 실제로 전달되는 옵션을 확인할 수 있습니다. –

답변

5

OS X은 다른 linker을 사용합니다. @rubenvb이 지적한대로, 아마도 Apple's binutils에서 나온 것일 것입니다. 당신이 man ld을 실행하고 "정의되지 않은"을 검색하면,이 옵션을 찾을 수 있습니다 :

-undefined treatment Specifies how undefined symbols are to be treated. Options are: error, warning, suppress, or dynamic_lookup. The default is error.

그래서, -Wl,-undefined,error-Wl,--no-undefined를 교체합니다. 또한 루크 포스 (Force, Luke)를 사용하십시오.

+0

OS X은 [Apple 's binutils] (http://www.opensource.apple.com/source/cctools/)가 아닌 LLVM의 'lld'를 사용합니까? – rubenvb

+0

@rubenvb 당신은 내 "교육받은"추측보다 옳을 것입니다 :)'ld -v'는 LTO를 위해 LLVM3.5를 사용한다고 말합니다. 내가 가지고 있어야하는 것보다 더 많은 것을 읽었습니다. 답변에서 해당 부분을 제거합니다. 괜찮 으면 올바른 정보로 편집하십시오. – Pradhan

+0

귀하의 답변은 현재와 같지만, 완전성을 위해 [lld 웹 사이트의 상태 섹션] (http://lld.llvm.org/#current-status)로 연결되는 링크입니다. – rubenvb

관련 문제