llvm/clang 은 gcc 의 미래인가?

ifree의 이미지

1. Overview

llvm 은 컴파일러 인프라스트럭처이며, 자체적인 중간 코드를 가지고 있다.
이 llvm 중간 코드는 실행 바이너리로 변환하거나, JIT 를 이용해 바로 실행할 수 있다.
llvm 은 컴파일 타임 최적화 뿐만 아니라 자바 가상머신과 같이 런타임 최적화를 제공한다.

clang 은 llvm 의 front end 로서 C/C++ 소스 파일을 llvm 중간 코드로 변환한다.

2. 현황

현재 버전은 2.7 이며 C 와 Objective C 는 상용으로 사용 가능한 상태 (애플에서 잘 쓰고 있음).
C++ 은 아직 베타 수준. (Qt 의 일부 코드가 컴파일이 안되고 있음)

3. Performance

아직은 GCC 에 실행파일의 속도나 호환성에서 뒤떨어짐.
벤치마크 - http://www.phoronix.com/scan.php?page=article&item=gcc_llvm_clang&num=1

제가 젠투에 깔아서 테스트 해 본 결과 컴파일 시간은 훨씬 빠르고 콘솔 기반 프로그램에서 문제는 없었습니다.

Scarecrow의 이미지

성능적인 측면보다...
GCC 4.5인가부터 GPL3가 적용됩니다.

그래서 저작권때문에
Apple이나 FreeBSD쪽에서는 GCC에서 clang으로 옮기는거 같습니다.

feanor의 이미지

GCC 4.5부터가 아니고, GCC 4.2.2부터 GPL3가 적용되었습니다. 몇 년 되었지요.

stypr의 이미지

FreeBSD 의 경우 clang 으로 옮기는 건 아닙니다. (현재로써는 희망사항이죠) 단순히 BSD 라이센스 컴파일러를 사용하고자 하는 사람들 (예를 들면 Roman Divacky 혹은 Ed Schouten 씨등등) 이 꾸준히 /projects/clangbsd/ 를 유지하고 있을 뿐이구요.