Linux 커널 Clang/LLVM 빌드 호환성 타임라인

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 기본

참고 자료

답글 남기기