GNU Compiler Collection

GNU Compiler Collection(GCC)은 GNU 프로젝트에서 개발하는 자유·오픈 소스 컴파일러 모음이다. 1987년 발표된 GNU C Compiler에서 출발해 C·C++ 외에 Fortran·Ada·Go·D·Objective-C 등 여러 언어로 지원을 확대했다. 2026년의...

약칭GCC
과거 명칭GNU C Compiler
분류컴파일러 모음·도구 체인
개발 주체GNU 프로젝트, GCC 공동체
주요 개발 초기Richard Stallman, 1987년 최초 공개
지원 언어C, C++, Fortran, Ada, Go, D, Objective-C 등
2026년 배포판의 프런트엔드Modula-2, Rust, COBOL, Algol 68 등도 포함
구조언어별 프런트엔드·GIMPLE·RTL·대상 백엔드
주요 도구gcc, g++, gfortran, gcov 등
대상x86·AArch64·RISC-V 및 여러 플랫폼
주요 라이브러리libgcc, libstdc++, libgfortran 등
라이선스GNU GPL v3 계열과 GCC Runtime Library Exception 등
공식 사이트gcc.gnu.org
프런트엔드 안내GCC Front Ends

GNU Compiler Collection(GCC)은 GNU 프로젝트에서 개발하는 자유·오픈 소스 컴파일러 모음이다. 1987년 발표된 GNU C Compiler에서 출발해 C·C++ 외에 Fortran·Ada·Go·D·Objective-C 등 여러 언어로 지원을 확대했다. 2026년의 GCC 공식 프런트엔드 목록에는 Modula-2·Rust·COBOL·Algol 68 등도 포함돼 있다. 다만 언어별 프런트엔드의 완성도와 지원 플랫폼이 서로 다르므로 지원 언어 목록만으로 특정 기능·표준을 완전히 구현했다고 단정해서는 안 된다.[1][2]

GCC는 소스 언어를 분석하는 프런트엔드와 공통 최적화기, 아키텍처별 코드 생성 기능을 분리한다. 프런트엔드가 만든 표현은 GIMPLE과 SSA 기반 분석·변환을 거쳐 RTL(Register Transfer Language) 같은 더 낮은 단계로 변환되며, 백엔드가 기계 명령 선택과 레지스터 할당을 처리한다. 이러한 여러 수준의 표현은 최적화 패스를 언어와 대상 CPU에 재사용할 수 있게 한다.[3]

개발자는 gcc·g++·gfortran 등의 드라이버로 컴파일을 시작하고 -O 최적화 수준과 경고·ABI·대상 아키텍처 옵션을 선택할 수 있다. 실제 실행 파일 제작에서는 전처리기·어셈블러·링커 및 표준 라이브러리가 함께 사용되며 GNU binutils와의 조합이 일반적이다. libgcc 등 런타임 라이브러리는 언어·하드웨어의 연산 구현을 보조하지만 모든 프로그램에 똑같은 라이브러리가 무조건 필요하지는 않다.

GCC는 여러 Unix·Linux 시스템의 기본 컴파일러이자 임베디드와 운영체제 개발에서 중요한 도구다. 교차 컴파일러는 실행 중인 개발 호스트와 다른 CPU·운영체제를 대상으로 코드를 생성할 수 있다. 이러한 작업에는 대상의 ABI와 시스템 루트·링커·C 라이브러리 설정이 필요하며 하나의 GCC 실행 파일만으로 모든 환경의 완성 바이너리를 만드는 것은 아니다.

GCC의 소스는 GPL 계열 라이선스로 공개되고 일부 런타임에는 별도 예외가 적용된다. 컴파일된 일반 프로그램의 저작권을 무조건 GCC 프로젝트에 넘기는 것은 아니며 실제 배포 시 포함하는 라이브러리의 라이선스와 정적·동적 링크 방식을 확인해야 한다. GCC는 언어 구현·최적화·대상 아키텍처의 폭넓은 공통 기반으로 성장한 대표적인 컴파일러 모음이다.[4]

역사

개발 배경과 설계

주요 구성 요소

프로그램 분석과 중간 표현

명령어·코드 생성

지원 플랫폼과 언어

빌드·개발 도구

라이선스와 공동체

장점과 한계

영향

관련 문서

  1. GCC 공식 프로젝트 소개 ↩
  2. GCC 프런트엔드 목록 ↩
  3. GCC Internals Manual ↩
  4. GCC Licensing ↩