728x90

GNU 컴파일러 컬렉션과 LLVM 프로젝트

1987년에 시작된 GNU(GNU is Not Unix)는 Unix 형식의 무료 소프트웨어를 수없이 많이 개발해 온 대규모 협회 프로젝트입니다. GNU의 산출물 중 하나가 GNU 컴파일러 컬렉션(GNU Compiler Collection) 즉, GCC입니다. 여기에는 C 컴파일러도 포함되어 있으며, 변화하는 C 표준을 따라잡기 위해 계속해서 노력하고 있습니다. GCC는 각종 하드웨어 플랫폼과 Unix, Linux, Windows 등 다양한 운영체제에서 사용할 수 있으며, gcc 명령으로 실행합니다. 또한, gcc를 사용하는 많은 시스템이 cc 명령을 gcc의 별칭(alias) 명령으로 사용합니다.

LLVM 프로젝트는 일리노이 대학에서 2000년 연구 프로젝트로 시작되었으며, 이 프로젝트 역시 컴파일러와 관련된 연구를 합니다. Clang 컴파일러는 코드를 컴파일할 수 있으며, clang 명령으로 실행될 수 있습니다. 다양한 플랫폼에 사용되는 Clang은, 2012년 말에 FreeBSD의 기본 C 컴파일러로 채택되었습니다. Clang 역시 GCC와 마찬가지로 C 표준을 잘 지키고 있습니다.

컴파일러의 버전은 -v 옵션으로 확인할 수 있습니다. cc에 대한 별칭 명령으로 gcc 또는 clang을 사용하는 시스템은 다음 명령으로 어떤 컴파일러를 사용하는지 확인할 수 있습니다.

cc -v

gcc와 clang에서 다음 옵션을 사용하면 컴파일할 때 사용되는 표준을 선택할 수 있습니다.

gcc -std=c99 hello.c        // C99에 대한 표준을 사용
gcc -std=c1x hello.c        // C11의 표준 초안을 사용
gcc -std=c11 hello.c        // C11의 표준을 사용

Clang에서는 gccclang으로 수정해주면 됩니다.


Linux 시스템

Linux는 Unix와 유사한 오픈 소스 운영체제이며, 다양한 플랫폼에서 사용됩니다. Linux에서 C 프로그램을 만드는 과정은 Unix와 유사하지만, Linux는 GNU에서 제공하는 GCC를 기본 컴파일러로 사용하고 있습니다. Linux에서의 컴파일 명령은 다음과 같습니다.

gcc hello.c

GCC를 아직 설치하지 않았다면 설치해야 합니다.


PC에서의 명령행 컴파일러

Windows를 깔 때 C 컴파일러가 자동으로 설치되지 않기 때문에 C 컴파일러를 직접 구해서 설치해야 합니다. Cyhwin과 MinGW를 이용하면 PC에서도 GCC 컴파일러를 사용할 수 있게 됩니다. Cyhwin은 Linux 명령행 환경을 모방한 자체 윈도우를 갖고 있지만, MinGW는 Windows 명령 프롬프트 모드에서 실행됩니다.

소스 코드 파일은 순수한 텍스트 파일이어야 하므로 Windows Notepad와 같은 텍스트 에디터를 사용해서 작성하면 됩니다. 워드프로세서와 같은 프로그램을 사용할 경우 Save As 기능을 사용해서 텍스트 모드로 저장하되, 파일 이름 확장자를 .c로 해야 합니다. 일부 워드 프로세서는 텍스트 파일러 저장하면 확장자를 자동으로 .txt로 붙이는데, 이럴 때도 파일 이름 확장자를 .txt에서 .c로 바꿔야 합니다.

일반적으로 PC에서 사용되는 C 컴파일러는 .obj 확장자를 가진 중간 오브젝트 코드 파일을 만듭니다. PC에서는 Unix와는 달리 작업이 끝나도 오브젝트 코드 파일을 삭제하지 않습니다. 일부 컴파일러들은 .asm 확장자를 가진 어셈블리 파일을 만들거나, 자신만의 특별한 형식의 파일을 만드는 경우도 있습니다.

컴파일러는 보통 컴파일 작업이 끝난 후 자동으로 링커를 실행하지만, 일부 컴파일러의 경우 사용자가 직접 링커를 실행해야 합니다. 링크 작업은 .exe 확장자인 실행 파일을 만듭니다. 예를 들어, hello.c라는 소스 코드 파일을 컴파일하고 링크하면 hello.exe라는 실행 파일이 만들어집니다. 이 파일을 실행시키기 위해서는 명령행에 다음과 같이 입력하면 됩니다.

hello


통합개발환경(Windows)

Microsoft, Embarcadero, Digital Mars 등의 많은 소프트웨어 회사들이 Windows 기반의 통합개발환경(IDE)을 제공합니다. 이들은 모두 C 프로그램을 작성할 수 있는 자체 에디터를 제공하며, IDE를 빠져나오지 않고도 프로그램을 컴파일하고 실행할 숟 있습니다. 또한, 에러가 발생했을 경우 에디터로 다시 돌아가 수정할 수 있습니다.

Windows 환경의 IDE들을 처음 접할 경우 복잡해 보일 수 있습니다. 일반적으로는 소스 코드 파일을 관리하는 프로젝트를 생성합니다. 정확한 절차는 IDE에 따라 다르지만, 일반적으로 File 메뉴나 Project 메뉴를 사용해서 프로젝트를 만들며, 프로젝트를 만들 때 프로젝트의 형식을 선택합니다. 이 강좌는 명령행 환경을 사용하는 프로젝트를 만들 것입니다.

Windows의 IDE들은 기본적으로 명령행 환경의 프로젝트를 제공하며, Microsoft Visual Studio에서는 Win32 Console Application 옵션을 선택합니다. 그 밖의 IDE에서는 DOS EXE, Console, Character Mode 등의 옵션을 선택해주면 됩니다.

Windows의 IDE는 C와 C++을 한 곳에서 처리하는 경우가 많아서 컴파일하는 파일이 C라는 것을 알려야 합니다. 보통 프로젝트 형식에서 C라는 것을 알리지만, Microsoft Visual Studio의 경우에는 파일 이름 확장자를 .c로 수정해야 합니다.

Microsoft Visual Studio C 표준

Microsoft Visual Studio는 소프트웨어 개발에서 큰 영향력을 갖고 있었기 때문에 그들과 C 표준의 관계는 중요합니다. 결론부터 말하면, Microsoft는 C 개발자에게 C++ 또는 C#으로 이전할 것을 권장하고 있습니다. Visual Studio는 C89(C90)를 지원하지만, 그 이후의 C 표준에 대한 지원은 추가가 되지 않고 있습니다. 또한, 최근 버전에서는 프로젝트 유형을 선택할 때 C를 선택할 수 없습니다. 그렇다고 Visual Studio에서 C 프로그래밍을 못 하는 것은 아닙니다. C++ 옵션을 선택하고 소스 파일의 확장자를 .cpp 확장자에서 .c로 수정하면 C 컴파일러를 사용할 수 있습니다.


Macintosh에서의 C

Apple은 다양한 프로그래밍 언어를 사용 가능한 Xcode 개발 시스템을 제공하고 있습니다.

728x90
728x90