{{위키데이터 속성 추적}}
{{소프트웨어 정보
|이름 = GNU Compiler Collection
|로고 = GNU Compiler Collection logo.svg
|로고크기 = 100px
|화면 = GCC 10.2 GNU Compiler Collection self-compilation.png
|설명 = 자체 소스 코드를 컴파일하는 GCC 10.2 스크린샷
|개발자 = [[GNU 프로젝트]]
| released = {{시작 날짜와 나이|1987|03|22}}<ref name="release-history">{{웹 인용|url=https://gnu.org/software/gcc/releases.html|title=GCC Releases|publisher=GNU Project|access-date=July 24, 2020|archive-date=June 4, 2023|archive-url=https://web.archive.org/web/20230604113400/https://www.gnu.org/software/gcc/releases.html|url-status=live}}</ref>
| latest release version = {{wikidata|property|preferred|references|edit|Q178940|P348|P548=Q2804309}}
| latest release date = {{wikidata|qualifier|preferred|single|Q178940|P348|P548=Q2804309|P577}}
| latest preview version = {{wikidata|property|preferred|references|edit|Q178940|P348|P548=Q51930650}}
| latest preview date = {{wikidata|qualifier|preferred|single|Q178940|P348|P548=Q51930650|P577}}
|프로그래밍 언어  = [[C (프로그래밍 언어)|C]], [[C++]] ({{시작 날짜와 나이|2010|6|01}} 이후)<ref name="gcc-c++">{{뉴스 인용| title = GCC allows C++&nbsp;– to some degree | url = http://www.h-online.com/open/news/item/GCC-allows-C-to-some-degree-1012611.html | publisher = [[Heinz Heise|The H]] |date=June 1, 2010 }}</ref>
|운영체제 = [[크로스 플랫폼]]
|종류 = [[컴파일러]]
|라이선스 = [[GPL|GNU GPL]]
|웹사이트 = {{url|http://gcc.gnu.org}}
}}

'''GNU 컴파일러 모음'''({{lang|en|GNU Compiler Collection}}, 줄여서 '''GCC''')는 [[GNU 프로젝트]]의 일환으로 개발되어 널리 쓰이고 있는 [[컴파일러]]이다.

[[자유 소프트웨어]] 중에 가장 잘 알려진 것들 중 하나인 GCC는 원래 [[C (프로그래밍 언어)|C]]만을 지원했던 컴파일러로 이름도 "GNU C 컴파일러"였다. 이러한 까닭에 현재에도 GCC는 GNU 컴파일러 모음의 일부인 '''GNU C 컴파일러'''({{lang|en|GNU C Compiler}})의 줄임말로 쓰이는 편이다. 그러나 나중에 [[C++]], [[자바 (프로그래밍 언어)|자바]], [[포트란]], [[에이다 (프로그래밍 언어)|에이다]] 등 여러 언어를 컴파일할 수 있게 되면서 현재의 이름으로 바뀌게 되었다.

== 개요 ==
GCC는 [[리처드 스톨만]]이 1987년 GNU 프로젝트의 컴파일러로 작성했다. GNU 프로젝트에 컴파일러가 없었기 때문에 이 개발은 자유 소프트웨어 재단이 후원하였다. 1997년 개발 과정은 공개되었으며 속도 또한 빨라졌다. 1999년 첫 버전이 나왔다. 현재 GCC는 전 세계적으로 관리되고 있으며 다양한 중앙 처리 장치를 처리할 수 있게 되었다.

GNU 시스템의 공식 컴파일러이므로 GCC는 많은 컴파일러와 운영 체제를 만드는 데 사용되었다. 한편, 시스템 네이티브 컴파일러를 사용했을 때 비해서 GCC를 사용하면 같은 파서로 코드를 처리하므로 이식성을 향상시킬 수 있다. GCC는 상용 컴파일러에 비해서 느린 코드를 생성했지만 최근 많이 개선되었다.

== 지원 프로그래밍 언어 ==
4.6 이후의 표준 컴파일러 릴리즈에는 [[C (프로그래밍 언어)|C]] (<code>gcc</code>), [[C++]] (<code>g++</code>), [[오브젝티브 C]], [[오브젝티브 C++]], [[포트란]] (<code>[[gfortran]]</code>), [[자바 (프로그래밍 언어)|자바]] (<code>[[gcj]]</code>), [[에이다 (프로그래밍 언어)|에이다]] ([[GNAT]]), [[고 (프로그래밍 언어)|고]] (<code>gccgo</code>)를 위한 프론트엔드가 포함되어 있다.<ref>[http://gcc.gnu.org/frontends.html "GCC Front Ends"] {{웨이백|url=http://gcc.gnu.org/frontends.html |date=20140209123026 }}, gnu.org, Retrieved November 25, 2011.</ref> 또한  이용은 가능하지만 표준에는 포함되지 않은 것으로 [[파스칼 (프로그래밍 언어)|파스칼]] (<code>[[GNU 파스칼|gpc]]</code>), [[머큐리 (프로그래밍 언어)|머큐리]], [[Modula-2]], [[Modula-3]], [[PL/I]], [[D (프로그래밍 언어)|D]] (<code>gdc</code>),<ref>{{웹 인용 |url=http://bitbucket.org/goshawk/gdc/ |제목=gdc project on bitbucket |accessdate=3 July 2010 }}{{깨진 링크|url=http://bitbucket.org/goshawk/gdc/ }}</ref> [[VHDL]] (<code>ghdl</code>)가 있다. 잘 알려진 병렬 언어 확장 [[OpenMP]]도 지원한다.

포트란 프론트엔드는 [[포트란 77]]만 지원했던 버전 4.0 이전까지 <code>g77</code>였다. 새로운 버전에서 <code>g77</code>는 [[포트란 2003]]의 일부와 [[포트란 95]]를 지원하는 새로운 <code>[[gfortran]]</code> 프론트엔드를 선호하게 되면서 지원이 중단되었다.<ref>{{웹 인용|url=http://gcc.gnu.org/wiki/Fortran2003|제목=Fortran 2003 Features in GNU Fortran|확인날짜=2014-01-01|보존url=https://web.archive.org/web/20140102200325/http://gcc.gnu.org/wiki/Fortran2003|보존날짜=2014-01-02|url-status=dead}}</ref> 나중의 포트란 표준이 F77 표준을 포함하면서 표준 호환 F77 코드가 표준 호환 F90/95 코드가 되어 gfortran에서 문제 없이 컴파일이 가능하다. [[CHILL]]을 위한 프론트엔드는 유지 보수 부족으로 개발이 중단되었다.<ref>[http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00887.html {{웨이백|url=http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00887.html |date=20120305214233 }} [PATCH&#93; Remove chill], gcc.gnu.org, Retrieved July 29, 2010.</ref>

일부 실험적인 브랜치들은 추가적인 언어들을 지원하기도 하는데, 이를테면 GCC UPC 컴파일러가 있다.<ref>{{웹 인용 |url=http://www.gccupc.org/ |제목=GCC UPC (GCC Unified Parallel C) &#124; http://www.gccupc.org/ |publisher=http://www.gccupc.org/<! |date=2006-02-20 |accessdate=2009-03-11 |보존url=https://web.archive.org/web/20100211142352/http://www.gccupc.org/ |보존날짜=2010-02-11 |url-status=dead }}</ref>

== 지원 아키텍처 ==
버전 4.3을 기준으로 GCC는 다음의 프로세서 계열을 대상으로 한다:

{{div col|colwidth=15em|small=no}}
* [[DEC 알파|알파]]
* [[ARM 아키텍처|ARM]]
* [[Atmel AVR|AVR]]
* [[블랙핀]]
* [[:en:Adapteva#Products|Epiphany]] (GCC 4.8)
* [[히타치 H8|H8/300]]
* [[HC12]]
* [[IA-32]] ([[x86]])
* [[IA-64]] (인텔 아이테니엄)
* [[MIPS 아키텍처|MIPS]]
* [[모토로라 68000]]
* [[PA-RISC]]
* [[PDP-11]]
* [[PowerPC]]
* [[R8C]] / [[M16C]] / [[M32C]]
* [[SPARC]]
* [[:en:Synergistic Processing Unit|SPU]]
* [[SuperH]]
* [[시스템/390]] / [[z시리즈]]
* [[VAX]]
* [[x86-64]]
{{참고 자료 끝}}

표준 릴리즈에서 지원되는, 위보다 잘 알려지지 않은 프로세서는 다음을 포함한다:

{{div col|colwidth=15em|small=no}}
* [[68HC11]]
* [[A29K]]
* [[CR16]]
* [[C6x]]
* [[D30V]]
* [[DSP16xx]]
* [[ETRAX CRIS]]
* [[후지쯔 FR|FR-30]]
* [[FR-V]]
* [[인텔 i960]]
* [[IP2000]]
* [[M32R]]
* [[MCORE]]
* [[MIL-STD-1750A]]
* [[MMIX]]
* [[MN10200]]
* [[MN10300]]
* [[모토로라 88000]]
* [[NS320xx|NS32K]]
* [[ROMP]]
* [[RL78]]
* [[Stormy16]]
* [[V850]]
* [[Xtensa]]
{{참고 자료 끝}}

FSF 버전과는 별개로 GCC 버전이 지원하고 있는 추가 프로세서들은 다음과 같다:

{{div col|colwidth=15em|small=no}}
* [[Cortus APS3]]
* [[ARC 인터내셔널|ARC]]
* [[AVR32]]
* [[C166]], [[C167]]
* [[D10V]]
* [[EISC]]
* [[eSi-RISC]]
* [[헥사곤 (프로세서)|헥사곤]]<ref>{{웹 인용|제목=Hexagon Project Wiki|url=https://www.codeaurora.org/xwiki/bin/Hexagon/|확인날짜=2014-01-01|보존url=https://web.archive.org/web/20131224105524/https://www.codeaurora.org/xwiki/bin/Hexagon/|보존날짜=2013-12-24|url-status=dead}}</ref>
* [[LatticeMico32]]
* [[LatticeMico8]]
* [[MeP]]
* [[MicroBlaze]]
* [[모토로라 6809]]
* [[MSP430]]
* [[NEC SX 아키텍처]]<ref>{{ 웹 인용|제목=sx-gcc: port gcc to nec sx vector cpu|url=http://code.google.com/p/sx-gcc/ }}</ref>
* [[Nios II]], [[:en:Nios embedded processor|Nios]]
* [[오픈RISC]]
* [[PDP-10]]
* [[PIC30|PIC24/dsPIC]]
* [[PIC30|PIC32]]
* [[패럴렉스 프로펠러|프로펠러]]
* [[시스템/370]]
* [[TIGCC]] ([[m68k]]의 변종)
* [[TriCore]]
* [[Z8000]]
{{참고 자료 끝}}

[[gcj]] 자바 컴파일러는 순수 기계어 아키텍처나 [[자바 가상 머신]]의 [[자바 바이트코드]]만을 대상으로 할 수 있다.<ref>{{웹 인용 | url = http://gcc.gnu.org/java/ | 제목 = The GNU Compiler for the Java Programming Language | accessdate = 2010-04-22 | 보존url = https://web.archive.org/web/20120831045746/http://gcc.gnu.org/java/ | 보존날짜 = 2012-08-31 | url-status = dead }}</ref> 새로운 플랫폼으로 GCC의 대상으로 변경할 때에는 bootstrap이 자주 쓰인다.

== 호환 IDE ==
[[리눅스]] 및 일부 운영 체제용으로 개발된 대부분의 [[통합 개발 환경]]은 GCC를 지원한다. 이를테면 다음을 포함한다.
* [[Anjuta]]
* [[Code::Blocks]]
* [[코드라이트]](CodeLite)
* [[Dev-C++]]
* [[이클립스]]
* [[geany]]
* [[KDevelop]]
* [[NetBeans]]
* [[Qt 크리에이터]]
* [[Xcode]] (엑스코드 4.1.0까지만 지원. 그 뒤에는 llvm-gcc라는 프론트엔드가 대신한다.)

== 버전 역사 ==
{{multicol}}

{| class="wikitable sortable"
|-
! 버전
! 출시일<ref>[http://www.gnu.org/software/gcc/releases.html GCC Releases], gnu.org.  Accessed on line Mar. 26, 2014.</ref><ref>[http://www.gnu.org/software/gcc/develop.html GCC Development Plan], gnu.org.  Accessed on line Mar. 26, 2014.</ref>
|-
| 7.1.0 ||2017-05-02
|-
| 6.3.0 ||2016-12-21
|-
| 6.2.0 ||2016-08-22
|-
| 4.9.4 ||2016-08-03
|-
| 5.4.0 ||2016-06-03
|-
| 6.1.0 ||2016-04-27
|-
| 5.3.0 ||2015-12-04
|-
| 5.2.0 ||2015-07-16
|-
| 4.9.3 ||2015-06-26
|-
| 4.8.5 ||2015-06-23
|-
| 5.1.0 ||2015-04-22
|-
| 5.0.0 ||2014-12-23
|-
| 4.8.4 ||2014-12-19
|-
| 4.9.2 ||2014-10-30
|-
| 4.9.1 ||2014-07-16
|-
| 4.7.4 ||2014-06-12
|-
| 4.8.3 ||2014-05-22
|-
| 4.9.0 ||2014-04-22
|-
| 4.8.2 ||2013-10-16
|-
| 4.8.1 ||2013-05-31
|-
| 4.6.4 ||2013-04-12
|-
| 4.7.3 ||2013-04-11
|-
| 4.8.0 ||2013-03-22
|-
| 4.7.2 ||2012-09-20
|-
| 4.5.4 ||2012-07-02
|-
| 4.7.1 ||2012-06-14
|-
| 4.7.0 ||2012-03-22
|-
| 4.4.7 ||2012-03-13
|-
| 4.6.3 ||2012-03-01
|-
| 4.6.2 ||2011-10-26
|-
| 4.6.1 ||2011-06-27
|-
| 4.3.6 ||2011-06-27
|-
| 4.5.3 ||2011-04-28
|-
| 4.4.6 ||2011-04-16
|-
| 4.6.0 ||2011-03-25<ref group="note">Support added for the Go language.</ref>
|-
| 4.5.2 ||2010-12-16
|-
| 4.4.5 ||2010-10-01
|-
| 4.5.1 ||2010-07-31
|-
| 4.3.5 ||2010-05-22
|-
| 4.4.4 ||2010-04-29
|-
| 4.5.0 ||2010-04-14
|-
| 4.4.3 ||2010-01-21
|-
| 4.4.2 ||2009-10-15
|-
| 4.3.4 ||2009-08-04
|-
| 4.4.1 ||2009-07-22
|-
| 4.4.0 ||2009-04-21
|-
| 4.3.3 ||2009-01-24
|-
| 4.3.2 ||2008-08-27
|-
| 4.3.1 ||2008-06-06
|-
| 4.2.4 ||2008-05-19
|-
| 4.3.0 ||2008-03-05
|-
| 4.2.3 ||2008-02-01
|-
| 4.2.2 ||2007-10-07
|-
| 4.2.1 ||2007-07-18
|-
| 4.2.0 ||2007-05-13
|-
| 4.1.2 ||2007-02-13
|-
| 4.0.4 ||2007-01-31
|-
| 4.1.1 ||2006-05-24
|-
| 4.0.3 ||2006-03-10
|-
| 3.4.6 ||2006-03-06
|-
| 4.1.0 ||2006-02-28
|-
| 3.4.5 ||2005-11-30
|-
| 4.0.2 ||2005-09-28
|-
| 4.0.1 ||2005-07-07
|-
| 3.4.4 ||2005-05-18
|-
| 3.3.6 ||2005-05-03
|-
| 4.0.0 ||2005-04-20<ref group="note">Fortran front end changed from g77 to [[gfortran]].</ref>
|-
| 3.4.3 ||2004-11-04
|-
| 3.3.5 ||2004-09-30
|-
| 3.4.2 ||2004-09-06
|-
| 3.4.1 ||2004-07-01
|-
| 3.3.4 ||2004-05-31
|-
| 3.4.0 ||2004-04-18
|-
| 3.3.3 ||2004-02-14
|-
| 3.3.2 ||2003-10-17
|-
| 3.3.1 ||2003-08-08
|-
| 3.3 ||2003-05-13
|-
| 3.2.3 ||2003-04-22
|-
| 3.2.2 ||2003-02-05
|-
| 3.2.1 ||2002-11-19
|-
| 3.2 ||2002-08-14
|-
| 3.1.1 ||2002-07-25
|-
| 3.1 ||2002-05-15<ref group="note">Added Ada compiler (gnat).</ref>
|-
| 3.0.4 ||2002-02-20
|-
| 3.0.3 ||2001-12-20
|-
| 3.0.2 ||2001-10-25
|-
| 3.0.1 ||2001-08-20
|-
| 3.0 ||2001-06-18<ref group="note">CHILL compiler removed.</ref><ref>[https://web.archive.org/web/20011120200544/http://gcc.gnu.org/install/download.html Downloading GCC], gnu.org, archived by archive.org as of November 20, 2001.  Accessed on line March 26, 2014.</ref>
|-
| 2.95.3 ||2001-03-16
|-
| 2.95.2 ||1999-10-24
|-
| 2.95.1 ||1999-08-19
|-
| 2.95 ||1999-07-31<ref group="note">Included front ends for C, C++, Objective C, CHILL, Fortran (g77), and Java (gcj).</ref>
|-
| egcs 1.1.2 ||1999-03-15
|-
| egcs 1.1.1 ||1998-12-01
|-
| egcs 1.1 ||1998-09-03
|-
| egcs 1.0.3 ||1998-05-15
|-
| egcs 1.0.2 ||1998-03-16
|-
| 2.8.1 ||1998-03-02
|-
| 2.8.0 ||1998-01-07
|-
| egcs 1.0.1 ||1998-01-06
|-
| egcs 1.0 ||1997-12-03<ref group="note">Added FORTRAN front end (g77).  However, g77 was not included with releases 2.8.0 or 2.8.1.</ref>
|-
| 2.7.2.3||1997-08-22
|-
| 2.7.2.2||1997-01-29
|}
{{multicol-break}}
{| class="wikitable sortable"
|-
! 버전
! 출시일
|-
| 2.7.2.1||1996-06-29
|-
| 2.7.2||1995-11-26
|-
| 2.7.1||1995-11-12
|-
| 2.7.0||1995-06-16
|-
| 2.6.3||1994-11-30
|-
| 2.6.2||1994-11-12
|-
| 2.6.1||1994-11-01
|-
| 2.6.0||1994-07-14
|-
| 2.5.8||1994-01-24
|-
| 2.5.7||1993-12-12
|-
| 2.5.6||1993-12-03
|-
| 2.5.5||1993-11-27
|-
| 2.5.4||1993-11-16
|-
| 2.5.3||1993-11-11
|-
| 2.5.2||1993-11-01
|-
| 2.5.1||1993-10-31
|-
| 2.5.0||1993-10-22
|-
| 2.4.5||1993-06-20
|-
| 2.4.4||1993-06-19
|-
| 2.4.3||1993-06-01
|-
| 2.4.2||1993-05-31
|-
| 2.4.1||1993-05-26
|-
| 2.4.0||1993-05-17
|-
| 2.3.3||1992-12-26
|-
| 2.3.2||1992-11-27
|-
| 2.3.1||1992-11-01
|-
| 2.3||1992-10-31
|-
| 2.2.2||1992-06-14
|-
| 2.2.1||1992-06-09
|-
| 2.2||1992-06-08
|-
| 2.1||1992-03-24
|-
| 2.0||1992-02-22<ref group="note">Supported C, C++, and Objective C.  Prior to this the C++ compiler was released separately from the C compiler.</ref>
|-
| g++ 1.42.0||1992-09-20
|-
| 1.42||1992-09-20
|-
| 1.41||1992-08-27
|-
| g++ 1.41.0||1992-07-13
|-
| g++ 1.40.3||1991-10-19
|-
| 1.40||1991-06-01
|-
| g++ 1.39.1||1991-05-04
|-
| 1.39||1991-01-16
|-
| 1.38||1990-12-21
|-
| g++ 1.37.1||1990-03-01
|-
| g++ 1.37.0||1990-02-28
|-
| 1.37.1||1990-02-21
|-
| 1.37||1990-02-11
|-
| g++ 1.36.4||1990-01-30
|-
| g++ 1.36.3||1990-01-16
|-
| 1.36||1989-09-24
|-
| 1.35||1989-04-26
|-
| 1.34||1989-02-23
|-
| 1.33||1989-02-01
|-
| 1.32||1988-12-21
|-
| 1.31||1988-11-19
|-
| 1.30||1988-10-13
|-
| 1.29||1988-10-06
|-
| 1.28||1988-09-14
|-
| 1.27||1988-09-05
|-
| 1.26||1988-08-18
|-
| 1.25||1988-08-03
|-
| 1.24||1988-07-02
|-
| 1.23||1988-06-26
|-
| 1.22||1988-05-22
|-
| 1.21||1988-05-01
|-
| 1.20||1988-04-19
|-
| 1.19||1988-03-29
|-
| 1.18||1988-02-04
|-
| 1.17||1988-01-09
|-
| 1.16||1987-12-19
|-
| g++ 1.15.3||1987-12-18
|-
| 1.15||1987-11-28
|-
| 1.14||1987-11-06
|-
| 1.13||1987-10-12
|-
| 1.12||1987-10-03
|-
| 1.11||1987-09-05
|-
| 1.10||1987-08-22
|-
| 1.9||1987-08-18
|-
| 1.8||1987-08-10
|-
| 1.7||1987-07-21
|-
| 1.6||1987-07-02
|-
| 1.5||1987-06-18
|-
| 1.4||1987-06-13
|-
| 1.3||1987-06-10
|-
| 1.2||1987-06-01
|-
| 1.1||1987-05-24
|-
| 1.0||1987-05-23
|-
| 0.9||1987-03-22
|}
{{multicol-end}}

== 같이 보기 ==
* {{임시링크|컴파일러 목록|en|List of compilers}}
* [[MinGW]]
* [[LLVM]] / [[클랭]]

== 참고 자료 ==
* [[리처드 스톨만|Richard M. Stallman]]: ''[http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc.html Using and Porting the GNU Compiler Collection]'', [[자유 소프트웨어 재단|Free Software Foundation]], {{ISBN|0-595-10035-X}}
* Richard M. Stallman: ''[http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/ Using Gcc: The Gnu Compiler Collection Reference]'', Free Software Foundation, {{ISBN|1-882114-39-6}}
* [[Brian J. Gough]]: ''[https://archive.today/20121205072412/http://www.network-theory.co.uk/gcc/intro/ An Introduction to GCC]'', Network Theory Ltd., {{ISBN|0-9541617-9-3}}

== 각주 ==
; 참조주
{{각주}}

; 내용주
{{각주|group=note}}

== 외부 링크 ==
{{위키공용|GCC}}
* {{언어링크|en}} {{공식 웹사이트}}
* {{언어링크|en}} [http://gcc.gnu.org/onlinedocs/ GCC 매뉴얼 목록]
* {{언어링크|en}} [https://web.archive.org/web/20060829144955/http://gcc.gnu.org/wiki GCC 위키]

{{GNU}}
{{자유-오픈 소스 소프트웨어}}
{{C 프로그래밍 언어}}
{{C++}}

{{전거 통제}}

[[분류:1987년 소프트웨어]]
[[분류:C 컴파일러]]
[[분류:C++ 컴파일러]]
[[분류:포트란 컴파일러]]
[[분류:파스칼 컴파일러]]
[[분류:크로스 플랫폼 자유 소프트웨어]]
[[분류:자유 컴파일러와 인터프리터]]
[[분류:GNU 프로젝트 소프트웨어]]
[[분류:자바 개발 도구]]
[[분류:C++로 작성된 자유 소프트웨어]]
[[분류:GPL 라이선스 소프트웨어]]
[[분류:유닉스 프로그래밍 도구]]