C·C++ 등 여러 프로그래밍 언어를 컴퓨터가 실행할 코드로 변환하는 GNU 프로젝트의 컴파일러 모음임. 1987년 GNU C 컴파일러로 첫 베타 버전이 공개됐으며, 이후 지원 언어와 하드웨어의 범위를 넓혀 자유 소프트웨어 개발의 주요 기반이 됨.
추가 정보
소스 코드와 기계를 이어 주는 기반
GCC는 사람이 작성한 프로그램을 컴퓨터가 실행할 수 있는 코드로 변환하는 컴파일러 모음임. C 컴파일러에서 출발했으나 C++·Fortran·Ada·Go·D·COBOL 등 다양한 언어의 프런트엔드와 관련 라이브러리를 포함하도록 발전함. 언어를 해석하는 부분과 최적화·기계어 생성 기반을 나누어 여러 언어와 하드웨어를 지원함. 편집기나 운영체제 자체와는 구분되는 개발 도구임.
자유 소프트웨어와 공동 개발
GNU 운영체제를 위한 도구로 출발했으며, 사용·연구·수정·재배포의 자유를 보장하는 개발 기반을 지향함. GNU/Linux를 비롯한 여러 환경에서 쓰이고, 개발하는 기계와 다른 기종을 대상으로 코드를 만드는 교차 컴파일도 지원함. 특정 제품 하나보다 여러 소프트웨어와 하드웨어를 연결하는 기반이라는 점이 중요함.
1997년 EGCS의 분기와 1999년 재통합은 기술적 개선만큼 개발 조직과 참여 방식도 중요했음을 보여 줌. 주요 결정은 운영위원회가 맡고, 개별 변경은 유지보수자들의 검토와 시험을 거침. 기업과 개인의 기여가 함께 이루어지는 공동체로, 한 조직이나 개인의 통제를 막으려는 취지가 운영위원회 설립 배경에 포함됨.
최적화의 발전과 호환성의 과제
Tree SSA, 링크 시간 최적화, 벡터화 등의 발전은 프로그램의 의미를 유지하면서 더 효율적인 실행 코드를 만드는 데 목적이 있음. 그러나 새 버전이 모든 프로그램을 일률적으로 빠르게 만드는 것은 아님. 언어 표준의 엄격한 적용, ABI 변화, 지원 중단 등이 기존 코드에 영향을 줄 수 있어 릴리스 문서와 이식 안내를 함께 확인할 필요가 있음. 지원 언어와 표준 준수 수준 역시 버전에 따라 다름.
컴파일러의 라이선스와 결과물의 구분
GCC 자체의 배포 조건과 GCC로 만든 프로그램의 조건은 구분해야 함. 2007년 GPL 버전 3으로의 전환을 예고했고, 2009년에는 실행시간 라이브러리 예외가 정비됨. GCC로 컴파일했다는 이유만으로 모든 결과 프로그램을 GPL로 공개해야 하는 것은 아님. 다만 포함된 라이브러리와 코드, 예외 적용 조건에 따라 구체적인 의무가 달라짐.
지속 가능한 협업을 위한 규칙
2023년 행동강령과 2026년 AI 기여 정책은 기술 프로젝트를 유지하는 사회적·법적 조건을 보여 줌. 특히 AI 정책은 사용 자체의 포괄적 금지가 아니라 제출되는 기여물의 성격과 책임을 구분함. 프로그램의 정확성뿐 아니라 검토 가능한 변경 이력과 인간 기여자의 책임을 중시하는 방향임.
