공개 소스 컴파일러, 「GCC 3.0」으로 업그레이드

일반입력 :2001/06/22 00:00

Stephen Shankland

공개 소스 기반이 변하고 있다. 지난 18일 개발자들은 GCC 3.0 버전을 내놓았다. GCC는 제작된 프로그램을 칩이 이해할 수 있는 형태로 바꿔주는 컴파일러로 리눅스같은 공개 소스 프로그램은 물론, 그 외의 모든 프로젝트에서 매우 중요한 기능을 수행한다. GCC는 리눅스로 소프트웨어를 제작하는 경우를 비롯해 유닉스 운영체제의 변종인 BSD와 아파치(Apache) 웹서버, 그놈(Gnome) 사용자 인터페이스, 재버(Jabber) 인스턴트 메시징 등과 같은 하이 레벨의 소프트웨어 제작에도 사용된다. GCC는 서로 다른 40개 이상의 칩 제품군에서 소프트웨어를 제작하고 구동하는데 사용된다. 10년 전 에릭 앨만이 공개 소스 센드메일(Sendmail) e-메일 서버 소프트웨어를 제작할 당시, GCC는 거대 컴퓨터 구동이 가능한 소프트웨어를 지원하는 여러 컴파일러 중 한 개에 불과했다. 그는 "당시에는 여러 개의 컴파일러를 사용했으며, GCC는 그중 하나였다. 그러나 현재는 GCC가 너무 일반화돼 GCC를 사용하지 않는 사람이 거의 없을 정도"라고 말했다. GCC는 지적 재산권에 구애받지 않고 공유할 수 있는 공개 소스 프로젝트에서만 사용되는 것은 아니다. 왜냐하면 GCC는 서로 다른 12개 정도의 CPU에서 프로그램을 제작할 수 있도록 설계됐기 때문에 지적 재산권을 문제삼는 상업 소프트웨어를 제작하는 데도 많이 사용된다. GCC는 MS 제품만큼 널리 퍼져있다. MS는 자사의 인테릭스(Interix) 소프트웨어의 일부로 컴파일러 소프트웨어를 출시했는데, 이는 유닉스 소프트웨어로 윈도우 컴퓨터를 구동시킬 수 있도록 제작됐다. 1년 이상의 개발 기간을 가졌던 GCC 3.0 버전은 인텔 메인스트림 칩용 지시사항을 만들 수 있는 기능을 추가했는데, 이는 인텔이 몇 년 동안 투자해 이뤄졌다. 인텔 이외의 다른 칩을 지원하는 기능 역시 향상됐다. 레드햇의 GCC 개발자 제프 로우는 GCC 3.0에서 새롭게 지원하는 칩에 인텔의 아이테니엄(Itanium), 엑스케일(XScale), 모토롤라(Motorola)의 M코어 210, 340, 미츠비쉬(Mitsubishi)의 D30V, 아트멜(Atmel)의 AVR, 후지쯔의 FR30 등이 있다고 밝혔다. 1992년 2월 2.0 버전이 출시된 이후 처음으로 대대적인 수정 작업을 거쳐 GCC 3.0버전이 나왔다. GCC 3.0은 공개 소스 소프트웨어의 가장 큰 문제거리인 코드 분열(code forking)의 해결 방안을 제시한다. 코드 분열은 두 개의 개발자 집단이 서로 다른 방향에서 개발을 진행해 생겨난 것이다. GCC의 역사원래 GCC는 FSF(Free Software Foundation)의 창립자 리차드 스톨만이 시작한 프로젝트로 1.0 버전은 1987년 5월에 출시됐다. GCC가 C 언어로 제작된 프로그램을 사용했기 때문에 과거에는 GNU C 컴파일러(Compiler)의 의미로 GCC가 사용됐다. GNU 프로젝트는 'GNU(GNU is Not Unix : GNU는 유닉스가 아니라는 뜻의 재귀적 약어)'로 불리는 자유(Free) 소프트웨어를 만들려는 스톨만의 노력에 의해 이뤄졌다. 하지만 현재에는 GCC가 다른 많은 언어로 작성된 프로그램을 인정하기 때문에 GNU 컴파일러 컬렉션의 의미로 GCC가 사용된다. 스톨만은 '자유 소프트웨어' 개념을 처음 도입했다. 그가 말하는 자유 소프트웨어는 비용이 들지 않는다는 의미뿐 아니라 소스가 공개되면 재배포도 자유롭게 할 수 있다는 의미까지 포괄한다. 스톨만은 GPL(General Public License)로 GCC를 내놓았다. 현재 GPL은 다른 많은 공개 소스에 사용된다. GNU 운영체제 프로젝트의 핵심 부문이 되기 위해 첫발을 내디딘 리눅스 커널도 GPL로 출시됐다. 리눅스 업체 레드햇은 지난 1999년 GCC를 채택해 새로운 칩들을 지원하고 있는 시그너스 솔루션(Cygnus Solution)을 인수하면서 GCC 개발을 적극 지원하고 있다. 시그너스를 창립했고, 현재는 레드햇의 CTO를 담당하고 있는 마이클 티에만은 시그너스는 GCC를 네트워크 장비의 저작권 시스템에 처음 사용했다고 밝혔다. 노텔이 1990년, 인텔은 1992년, 시스코와 알카텔은 1992년에 시그너스의 주요 고객사가 됐다. 티에만은 컴파일러의 도구적인 측면을 처음 개발했고 1987년 1.0 버전을 출시하면서 GCC에 새로운 몇 가지 기능을 추가했다. 추가된 기능에는 내셔널 세미컨덕터(National Semiconductor) 32032 칩에서 구동되는 기능, C++ 언어로 작성된 소프트웨어를 수용하는 기능 등이 있다. 티에만은 GCC를 모토롤라 8800, 인텔의 386 칩, MIPS 칩, 썬의 스파크(Sparc) 칩 등으로 변형하는 작업도 했다. 그는 또한 인텔의 아이테니엄같은 'VLIW(very long instruction world)' 기반을 닦는데도 일조했다. GCC는 너무 일반적인 목적으로 사용돼 비난을 받기도 한다. 너무 다양한 언어로 작성된 많은 칩에서 사용 가능하기 때문에 GCC를 이용해 제작된 소프트웨어는 특징없는 것이 될 수 있기 때문이다. 하지만 티에만은 GCC를 옹호했다. 티에만은 "GCC를 이용해 다양한 칩에서 소프트웨어를 제작하는 방법을 알아내면 그만큼 다양한 칩에 적용할 수 있는 개선점들을 찾아낼 수 있다. 모든 아키텍처에 있는 칩의 속성을 알아내면 우수한 성능의 컴파일러를 제작하는데 많은 도움이 된다. 예를 들어 MISP와 썬의 칩용 GCC에 대한 수정 경험을 갖게되면 그 이후에 인텔 칩이나 다른 설계의 칩들을 이해하는 데 많은 도움이 된다"고 말했다. 뿐만 아니라 GCC에는 특정 칩에서 소프트웨어를 최적화해주는 모듈이 있다. 그는 "일부 기업들은 컴파일러 개발에 5000만 달러에서 1억 달러 정도 투자하고 있다. 주어진 아크(arch)의 일부 퍼센테이지로 선두적인 위치를 차지할 수 있다"고 말하면서, "일반적인 컴파일러 인프라로 광범위한 마이크로프로세서를 지원하는 기능과 신속하게 마이크로프로세서를 채택할 수 있는 기능은 무어의 법칙을 좀더 효율적으로 이용할 수 있게 해준다. 무어의 법칙은 18개월 단위로 전력이 두 배로 증가한다는 이론"이라고 덧붙였다. 레드햇이 시그너스를 인수할 당시 연간 수익은 2000만 달러였다. 이정도 수익이 가능했던 것은 네트워크 라우터나 다른 통신 장비의 내장 설계에서 좋은 성과를 거뒀기 때문이다. 인텔이 시그너스에 투자했기 때문에 GCC가 1960 통신 프로세서를 지원했다. 이제 GCC는 새로운 컴퓨팅 환경을 열고 있다. 스톨만은 "GCC가 너무 많은 기계와 플랫폼을 지원하기 때문에 이제는 디폴트로 제공되고 있다"고 말했다. "사람들이 원하는 것은 동일한 컴파일러를 어디에서나 사용할 수 있게 되는 것"이라고 말했다. 코드 분열티에만이 시그너스에 있는 동안 그의 회사는 GCC에 대해 강력한 영향력을 갖게 됐다. FSF가 지정한 GCC 지지자들은 GCC에 나타나는 모든 변화를 감당하기에는 시간이 너무 부족했다. 이러한 변화를 관리하는 방법에서 의견일치를 보지 못했기 때문에 시그너스는 1997년 EGCS라 불리는 GCC의 새로운 버전을 만들었다. 티에만은 "시그너스가 EGCS를 통해 다른 업체의 우선 순위를 무시하지 않으면서 GCC에 큰 영향력을 행사할 수 있다는 것을 보여줬다"고 말했다. 따라서 1999년 4월에 FSF가 GCC와 EGCS 프로젝트를 사용하는데 동의함에 따라 문제는 해결됐으며, EGSC 프로젝트는 자체적으로 문제를 해결할 GCC 대신에 작업할 수 있게 됐다. 티에만은 "무혈의 상태로 분열됐으며, 재결합도 무혈로 이뤄졌다"고 말했다. @