GNU 컴파일러 모음 (GNU Compiler Collection , 줄여서 GCC )는 GNU 프로젝트 의 일환으로 개발되어 널리 쓰이고 있는 컴파일러 이다.
자유 소프트웨어 중에 가장 잘 알려진 것들 중 하나인 GCC는 원래 C 만을 지원했던 컴파일러로 이름도 "GNU C 컴파일러"였다. 이러한 까닭에 현재에도 GCC는 GNU 컴파일러 모음의 일부인 GNU C 컴파일러 (GNU C Compiler )의 줄임말로 쓰이는 편이다. 그러나 나중에 C++ , 자바 , 포트란 , 에이다 등 여러 언어를 컴파일할 수 있게 되면서 현재의 이름으로 바뀌게 되었다.
개요
GCC는 리처드 스톨만 이 1987년 GNU 프로젝트의 컴파일러로 작성했다. GNU 프로젝트에 컴파일러가 없었기 때문에 이 개발은 자유 소프트웨어 재단이 후원하였다. 1997년 개발 과정은 공개되었으며 속도 또한 빨라졌다. 1999년 첫 버전이 나왔다. 현재 GCC는 전 세계적으로 관리되고 있으며 다양한 중앙 처리 장치를 처리할 수 있게 되었다.
GNU 시스템의 공식 컴파일러이므로 GCC는 많은 컴파일러와 운영 체제를 만드는 데 사용되었다. 한편, 시스템 네이티브 컴파일러를 사용했을 때 비해서 GCC를 사용하면 같은 파서로 코드를 처리하므로 이식성을 향상시킬 수 있다. GCC는 상용 컴파일러에 비해서 느린 코드를 생성했지만 최근 많이 개선되었다.
지원 프로그래밍 언어
4.6 이후의 표준 컴파일러 릴리즈에는 C (gcc
), C++ (g++
), 오브젝티브 C , 오브젝티브 C++ , 포트란 (gfortran
), 자바 (gcj
), 에이다 (GNAT ), 고 (gccgo
)를 위한 프론트엔드가 포함되어 있다.[ 4] 또한 이용은 가능하지만 표준에는 포함되지 않은 것으로 파스칼 (gpc
), 머큐리 , Modula-2 , Modula-3 , PL/I , D (gdc
),[ 5] VHDL (ghdl
)가 있다. 잘 알려진 병렬 언어 확장 OpenMP 도 지원한다.
포트란 프론트엔드는 포트란 77 만 지원했던 버전 4.0 이전까지 g77
였다. 새로운 버전에서 g77
는 포트란 2003 의 일부와 포트란 95 를 지원하는 새로운 gfortran
프론트엔드를 선호하게 되면서 지원이 중단되었다.[ 6] 나중의 포트란 표준이 F77 표준을 포함하면서 표준 호환 F77 코드가 표준 호환 F90/95 코드가 되어 gfortran에서 문제 없이 컴파일이 가능하다. CHILL 을 위한 프론트엔드는 유지 보수 부족으로 개발이 중단되었다.[ 7]
일부 실험적인 브랜치들은 추가적인 언어들을 지원하기도 하는데, 이를테면 GCC UPC 컴파일러가 있다.[ 8]
지원 아키텍처
버전 4.3을 기준으로 GCC는 다음의 프로세서 계열을 대상으로 한다:
표준 릴리즈에서 지원되는, 위보다 잘 알려지지 않은 프로세서는 다음을 포함한다:
FSF 버전과는 별개로 GCC 버전이 지원하고 있는 추가 프로세서들은 다음과 같다:
gcj 자바 컴파일러는 순수 기계어 아키텍처나 자바 가상 머신 의 자바 바이트코드 만을 대상으로 할 수 있다.[ 11] 새로운 플랫폼으로 GCC의 대상으로 변경할 때에는 bootstrap이 자주 쓰인다.
호환 IDE
리눅스 및 일부 운영 체제용으로 개발된 대부분의 통합 개발 환경 은 GCC를 지원한다. 이를테면 다음을 포함한다.
버전 역사
버전
출시일[ 12] [ 13]
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[ note 1]
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[ note 2]
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[ note 3]
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[ note 4] [ 14]
2.95.3
2001-03-16
2.95.2
1999-10-24
2.95.1
1999-08-19
2.95
1999-07-31[ note 5]
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[ note 6]
2.7.2.3
1997-08-22
2.7.2.2
1997-01-29
버전
출시일
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[ note 7]
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
같이 보기
참고 자료
각주
참조주
↑ “GCC Releases” . GNU Project. 2023년 6월 4일에 원본 문서 에서 보존된 문서. 2020년 7월 24일에 확인함 .
↑ “GCC 15.1 Released” . 2025년 4월 25일. 2025년 4월 25일에 확인함 .
↑ “GCC allows C++ – to some degree” . The H . 2010년 6월 1일.
↑ "GCC Front Ends" 보관됨 2014-02-09 - 웨이백 머신 , gnu.org, Retrieved November 25, 2011.
↑ “gdc project on bitbucket” . 2010년 7월 3일에 확인함 . [깨진 링크 (과거 내용 찾기 )]
↑ “Fortran 2003 Features in GNU Fortran” . 2014년 1월 2일에 원본 문서 에서 보존된 문서. 2014년 1월 1일에 확인함 .
↑ [https://web.archive.org/web/20120305214233/http://gcc.gnu.org/ml/gcc-patches/2002-04/msg00887.html 보관됨 2012-03-05 - 웨이백 머신 [PATCH] Remove chill], gcc.gnu.org, Retrieved July 29, 2010.
↑ “GCC UPC (GCC Unified Parallel C) | http://www.gccupc.org/” . http://www.gccupc.org/ <!. 2006년 2월 20일. 2010년 2월 11일에 원본 문서 에서 보존된 문서. 2009년 3월 11일에 확인함 .
↑ “Hexagon Project Wiki” . 2013년 12월 24일에 원본 문서 에서 보존된 문서. 2014년 1월 1일에 확인함 .
↑ “sx-gcc: port gcc to nec sx vector cpu” .
↑ “The GNU Compiler for the Java Programming Language” . 2012년 8월 31일에 원본 문서 에서 보존된 문서. 2010년 4월 22일에 확인함 .
↑ GCC Releases , gnu.org. Accessed on line Mar. 26, 2014.
↑ GCC Development Plan , gnu.org. Accessed on line Mar. 26, 2014.
↑ Downloading GCC , gnu.org, archived by archive.org as of November 20, 2001. Accessed on line March 26, 2014.
내용주
↑ Support added for the Go language.
↑ Fortran front end changed from g77 to gfortran .
↑ Added Ada compiler (gnat).
↑ CHILL compiler removed.
↑ Included front ends for C, C++, Objective C, CHILL, Fortran (g77), and Java (gcj).
↑ Added FORTRAN front end (g77). However, g77 was not included with releases 2.8.0 or 2.8.1.
↑ Supported C, C++, and Objective C. Prior to this the C++ compiler was released separately from the C compiler.
외부 링크