자신만의 컴파일러를 만들거나 최적화하는 개발자에게 필요한 모듈형 도구 모음
자신이 만든 프로그래밍 언어를 기계어로 바꾸는 과정을 손으로 설계하고 싶다면, 이 저장소가 그 기초를 제공합니다. LLVM은 중간 표현을 처리해 최종 실행 파일을 만드는 컴파일러의 핵심 부품들을 모아둔 도구 상자입니다. C나 C++ 같은 언어를 컴파일하는 Clang부터 표준 라이브러리까지, 컴파일러 생태계의 주요 요소들이 함께 있습니다.
중간 표현을 다루는 핵심 엔진
LLVM 프로젝트의 중심은 'LLVM'이라는 이름의 컴포넌트입니다. 이 부분은 중간 표현을 받아들이고 이를 최적화한 뒤, 실제 기계가 이해할 수 있는 객체 파일로 변환하는 역할을 합니다. 어셈블러, 디스어셈블러, 비트코드 분석기, 비트코드 최적화기 같은 도구들이 여기에 포함되어 있습니다. 각 도구는 독립적으로 사용할 수 있어, 특정 단계만 필요한 경우에도 활용할 수 있습니다.
C 계열 언어를 위한 프론트엔드
C, C++, Objective-C, Objective-C++ 코드를 컴파일할 때는 Clang 프론트엔드를 사용합니다. Clang은 소스 코드를 LLVM 비트코드로 변환하고, 이후 LLVM이 이를 객체 파일로 완성합니다. 이 구조 덕분에 프론트엔드와 백엔드를 분리해 관리할 수 있으며, 새로운 언어를 지원할 때도 기존 LLVM 인프라를 재사용할 수 있습니다.
함께 제공되는 생태계 구성 요소
컴파일러 자체 외에도 컴파일링 과정에 필요한 여러 구성 요소가 이 저장소에 함께 있습니다. C++ 표준 라이브러리인 libc++, 링커인 LLD 등이 대표적입니다. 이러한 구성 요소들은 LLVM과 함께 빌드되어 통합된 도구 체인을 형성합니다. 개별적으로 필요한 경우에도 소스 코드에서 분리해 사용할 수 있도록 설계되어 있습니다.
소스 코드 확보와 빌드 방법
소스 코드를 가져오고 빌드하는 구체적인 절차는 'Getting Started with LLVM' 페이지에 자세히 안내되어 있습니다. 이 저장소에는 빌드 스크립트나 자동화 도구가 포함되어 있지 않으며, 공식 문서의 지시에 따라 직접 빌드 환경을 설정해야 합니다. 기여를 원한다면 'Contributing to LLVM' 가이드를 참고해야 합니다.
사용 전 확인해야 할 사항
이 저장소는 완성된 컴파일러 바이너리가 아니라 소스 코드입니다. 따라서 직접 빌드할 수 있는 환경과 시간이 필요합니다. 커뮤니티 소통 채널로는 Discourse 포럼, Discord 채팅, 오피스 아워 등이 운영되고 있으며, 참여 시 프로젝트의 행동 강령을 준수해야 합니다.