Linux 커널은 오랫동안 GCC 중심으로 개발되어 왔다.
하지만 최근 몇 년 사이 Clang / LLVM 기반 빌드가 빠르게 안정화되었다.
이 글은 커널에서 Clang 빌드가 어떻게 발전해왔는지를 실제 메인라인 흐름 기준으로 정리한 타임라인이다.
timeline
title Linux Kernel Clang Build Compatibility Timeline
2010~2016 (3.x ~ 4.7)
: 실험적 빌드 시도
: 메인라인 직접 빌드 어려움
: asm goto 미지원
: 대규모 패치 필요
2017~2019 (4.8 ~ 5.3)
: 메인라인 빌드 가능 수준
: CONFIG_CC_IS_CLANG 도입
: x86 / arm64 빌드 안정화
: Clang CI 점진 확대
2020 (5.4 ~ 5.8)
: Clang LTO 메인라인 진입
: ThinLTO 실사용 가능
: ld.lld 안정화
2021 (5.10 LTS)
: Android Clang 기본화
: ChromeOS 전환
: 대규모 산업 적용
2022~2023 (5.15 LTS ~ 6.5)
: 대부분 아키텍처 공식 지원
: riscv / s390 / powerpc 안정화
: CI에서 Clang 기본 포함
2024~현재 (6.6 LTS ~ 6.x 최신)
: Clang + LLD 1급 툴체인
: LTO, BTF, sanitizer 안정
: GCC와 동등한 공식 지원 상태
2010~2016 (3.x ~ 4.7): 실험 단계
- Clang으로 커널 빌드는 “가능은 하지만 패치 필요”
- inline asm, constraint, asm goto 문제 다수
- 벤더 커널은 거의 불가능
이 시기에는 Clang으로 빌드한다는 것 자체가 실험에 가까웠다.
2017~2019 (4.8 ~ 5.3) : 메인라인 빌드 안정화
이 시기에 중요한 변화가 있었다.
asm goto지원 개선- constraint 처리 안정화
- arm64/x86 메인라인에서 Clang CI 확대
CONFIG_CC_IS_CLANG도입
이 시점부터
“Clang으로 메인라인 커널은 빌드 가능”
이라는 인식이 생겼다.
2020 (5.4 ~ 5.8) : Clang LTO 메인라인 진입
커널 5.x 후반부에서
- Clang LTO 지원 병합
- ThinLTO 실사용 가능
- ld.lld 안정화
이때부터 Clang은 단순 대체 컴파일러가 아니라
성능 최적화 옵션을 가진 대안 툴체인
이 되었다.
2021 (5.10 LTS): 대규모 산업 적용
- Android 커널 Clang 기본화
- ChromeOS Clang 전환
- Google 내부 인프라 Clang 중심 운영
이 시점 이후
Clang 빌드는 실험이 아니라 산업 표준 중 하나
가 되었다.
2022~2023 (5.15 LTS ~ 6.x): 거의 모든 아키텍처 지원
- x86
- arm64
- riscv
- s390
- powerpc 등
대부분이 Clang 빌드 공식 지원 상태에 도달.
make LLVM=1은 사실상 “일반 옵션”이 되었다.
2024~현재 (6.6 LTS ~): 1급 툴체인
현재 상태:
- Clang + LLD는 매우 안정적
- 메인라인에서 GCC 전용 코드 거의 제거
- CI에서 Clang 빌드가 기본 포함
- eBPF, BTF, sanitizer 연계는 Clang이 더 강함
현재 기준 판단:
| 커널 계열 | Clang 빌드 |
|---|---|
| 6.x 메인라인 | 매우 안정 |
| 5.15 LTS | 안정 |
| 5.4 LTS | 대체로 가능 |
| 4.x 벤더 | 수정 필요 |
벤더 커널 관점 현실
6.x 기반 벤더 트리
- 대부분 바로 빌드 가능
- inline asm 일부 수정 필요
5.4 기반 BSP
- constraint, section attribute 문제 발생 가능
- ld.lld 관련 수정 필요
4.9 / 4.14 BSP
- 대규모 asm 수정 필요
- 일부 아키텍처 패치 backport 필요
정리: Clang 전환 판단 기준
| 상황 | 권장 |
|---|---|
| 최신 LTS 유지 | Clang 적극 추천 |
| eBPF 중심 개발 | Clang |
| 오래된 BSP 유지보수 | GCC 유지 + Clang 점진적 도입 |
| 신규 플랫폼 | Clang 기본 |
참고 자료
- Linux kernel – Clang/LLVM 빌드 문서
https://docs.kernel.org/kbuild/llvm.html - ClangBuiltLinux
https://github.com/clangbuiltlinux - LLVM 공식 문서
https://llvm.org/docs/