2013-07-22 2 views
7

지난번에 내가 clang을 확인한 것은 3.1/3.2 버전이었고 이제는 우분투 13.04 64 비트를 사용하고 있으며 공식 apt 저장소에서 clang 및 llvm (도구 포함)을 설치했지만 llvm-ld-3.4의 흔적은 없습니다. llvm-ld-3.0llvm-ld-3.1은 내 컴퓨터에서 사용할 수있는이 도구의 유일한 2 가지 버전입니다. 내 질문은 다음과 같습니다. llvm-ld를 대체하고 라이브러리 또는 기계 실행 파일을 생성해야하는 이유는 무엇입니까?clang 3.4에는 llvm-ld가 여전히 존재합니까?

답변

14

llvm-ld 더 이상 존재하지 않습니다. LLVM 3.2 release notes에서 : |

는 LLVM-LD와 LLVM-스텁 제거 된

, LLVM-LD 기능은 부분적으로 LLVM 링크로 대체 될 수있다 선택 | {llc | as, llc -filetype = obj} | ld, 또는 완전히 Clang으로 대체되었습니다.

또는 더 좋은 형식 : llvm-link

  1. 링크 모든 .bc/.ll 파일,
  2. 생성하는 비트 코드 파일을 최적화하기 위해 하나의 비트 코드 파일
  3. 실행 opt를 얻을 수 있습니다 객체 파일을
    • llc 중 하나를 통해 가져온 다음 시스템 어셈블러 (as)를 ge 다른 모든 필수 오브젝트 파일로 오브젝트 파일을 링크
  4. 시스템 링커 (ld) (이 그냥 그 자체 시스템 어셈블러를 호출)
  5. llc -filetype=obj는 오브젝트 파일을 얻을 수있는 오브젝트 파일에서 t

의 경우이 제거 된 이유는 this LLVM-dev discussion입니다. How to link object to libraries with LLVM >= 3.1 ? (no GNU ld)

+0

그래서 기본적으로 유일한 옵션은 GNU'ld'은 다음과 같습니다

또한,이 관련 질문에 관심이있을 수 있는가? 나는 그들이 왜 이것을했는지 MAC OS X 환경에서 무슨 일이 일어나는지 궁금하다. 그들은 MAC에서도'ld'를 사용하고 있는가? 호기심은'-O4' 최적화 수준에 관한 것이기 때문에이 경우 어떻게해야할까요? – user2485710

+0

@ user2485710이 내 대답을 업데이트했습니다. 또한 제공된 링크를 통해 LTO를 작동시키는 것에 대해 언급 할 수 있습니다. – Oak

관련 문제