배포판 기본 저장소가 주는 Clang은 흔히 몇 년 묵어 있어서, 최신 C++ 표준의 새 기능이나 최근 LLVM 진단 개선을 쓰려면 다른 경로로 설치해야 한다. 예전에는 이럴 때 소스를 받아 처음부터 빌드하는 안내가 흔했지만, 지금은 대부분 공식 APT 저장소 하나로 끝난다.

apt.llvm.org로 끝내기

데비안·우분투 계열이면 LLVM 프로젝트가 직접 운영하는 APT 저장소(https://apt.llvm.org/)를 추가하는 것으로 충분하다. 저장소가 제공하는 자동 설치 스크립트를 그대로 실행하면 저장소 등록부터 패키지 설치까지 한 번에 끝난다.

bash -c "$(wget -O - https://apt.llvm.org/llvm.sh)"

버전을 지정하려면 스크립트를 받아 인자로 넘긴다.

wget https://apt.llvm.org/llvm.sh
chmod +x llvm.sh
sudo ./llvm.sh <버전>

apt.llvm.org는 개발(development), 검증(qualification), 안정(stable) 세 갈래를 함께 배포하며, 각 저장소에는 clang뿐 아니라 compiler-rt, polly, lldb, lld, libFuzzer 등 LLVM 툴체인 전체가 딸려 온다. 대부분은 여기서 끝난다 — 소스 빌드부터 시작하는 안내를 많이 보게 되지만, 실제로 그럴 필요가 있는 경우는 드물다.

소스 빌드가 필요한 경우

패치를 적용하거나 배포판 패키지가 지원하지 않는 특정 빌드 옵션이 필요할 때만 소스 빌드로 넘어간다. 이때 소스는 https://github.com/llvm/llvm-project/releases 에서 받는다. LLVM 공식 릴리스 절차 문서(How To Release LLVM)는 릴리스 아티팩트를 GitHub에 올리도록 규정하고 있고, 실제로 각 릴리스 페이지에 소스 tarball과 플랫폼별 바이너리가 함께 올라와 있다.

예전 글들이 안내하던 releases.llvm.org/<버전>/ 형태의 URL은 완전히 죽지는 않았다 — 6.0.0, 16.0.0처럼 오래된 버전의 디렉터리는 지금도 열린다. 다만 최근 릴리스는 그 안에 올라오지 않는다. 즉 옛 글의 다운로드 링크 자체는 여전히 열리지만, 그건 몇 년 전 배포본일 뿐 최신 버전을 받는 경로가 아니다. 최신 버전을 확인하고 받으려면 이제 GitHub Releases 페이지를 봐야 한다.

여러 버전 공존

apt.llvm.org로 설치한 패키지는 clang-17, clang-18처럼 버전 번호가 붙은 이름으로 나란히 설치되므로, 여러 버전을 동시에 두고 update-alternatives로 기본값을 전환할 수 있다.

sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-<> 100
sudo update-alternatives --config clang

--installlink name path priority 순서로 인자를 받는다. 여기서는 /usr/bin/clang을 마스터 링크로 등록하고, 실제 설치된 /usr/bin/clang-<버전> 경로를 그 대안으로 추가한다. 이렇게 등록해 둔 버전이 둘 이상이면 --config clang이 현재 선택을 표시하고 대화형으로 고를 수 있게 해 준다.

참고