LLVM 프로젝트는 여러 라이브러리와 툴로 구성되어 있다. LLVM은 “모든 것이 라이브러리다”라는 말이 있을 정도로, 코드 대부분 재사용도가 높다고 한다. 또, 설계 시에 이 요소들이 함께 잘 연결되도록 해야한다.

오늘날의 LLVM의 이해

내가 앞에서 LLVM은 다양한 의미를 갖고 있어서 정의 내리는데 어려움을 겪었다고 얘기했었다. LLVM을 검색하면 글이나 페이지마다 LLVM을 약간씩 다르게 설명했고, 나는 LLVM이 그 모든 것들을 지칭하는 단어로 쓰일 수 있다는 사실을 이해하기까지 시간이 걸렸다.

그런데 책에서 LLVM에 대한 여러 의미들을 명쾌하게 정리한 부분이 나왔다. LLVM은 다음과 같이 크게 5가지 뜻으로 사용된다.

  • LLVM 프로젝트/인프라스트럭처
    몇 개의 프로젝트 집합
    완벽한 컴파일러를 구성할 수 있음 (프론트엔드, 백엔드, 최적화, 어셈블리, 링커, libc++, compiler-rt, JIT 엔진)
    ex) LLVM은 몇 개의 프로젝트로 구성되어 있다

  • LLVM 기반 컴파일러
    LLVM 인프라스트럭처를 사용한 부분적 or 완벽한 컴파일러
    ex) 나는 MIPS 플랫폼에 C 프로그램으 컴파일하기 위해 LLVM을 사용했다

  • LLVM 라이브러리

  • LLVM 코어
  • LLVM IR