tool chain 이란 embedded system에서
자주 사용되는 말로
"원하는 Target System의 소프트웨어
개발을 하기 위한 Host System의 Compile 환경"을 의미합니다.
여기서 Compile 환경은 주로 Target과 Host가 다르기 때문에 흔히
크로스-컴파일 환경이란 말로 사용됩니다만
꼭 Target과 Host 의 System이 다를 필요가 없기 때문에 그냥 Compile 환경이라고
했습니다.
질문자님의 경우를 보면 우선
Target System : Windows 환경
Host System : Windows 환경
입니다. 그러니까 Target System 과 Host System 이 같은 경우입니다.
이제 부터 Compile 환경에 대해
이야기 해 봅시다.
얼핏 Eclipse가 컴파일러 같지만
사실 Eclipse는 Java 용 컴파일러만 내장하고 있고C++는 컴파일러가 내장되어 있지 않습니다.
그렇기 때문에 Eclipse로 C++ 를 컴파일 하고 싶다면 컴파일러를 설정하여 주어야 합니다.
여기에 단순히 하나의 컴파일러만 사용되는 것이 아니라 일반적으로
컴파일러
링커
바이너리 변환기(bin2exe, binutils 같은 프로그램)
등이 사용되고 이 Tool 들이 연속적으로
사용되기 때문에(컴파일한 후 링크하고
바이너리로 변환) chain 으로 불립니다.
Eclipse로 프로그램을 작성하지만 Eclipse에서
제공할 수 있는 것은 Edit 기능과 Project관리 기능
및 Tool chain 들의 사용법대로 호출해주는 것만 할 수 있지요.
우선 대부분의 프로그래머들이 Eclipse
용 C++ 컴파일러로 gcc를 사용합니다.
gcc를 사용해서 컴파일한 후에 링크하고 binutils 같은 프로그램으로 윈도우즈용 실행 파일인 .exe 파일을 만드는 것이죠.
일반적으로 이 일들을 한 번에 해주는 tool이
바로 MinGW와 CygWin 입니다.
복잡한 Tool chain이 필요없이 MinGW나 CygWin 만 있으면 바로 소스코드에서
윈도우즈용 .exe 파일을 만들 수 있는
것이죠.
eclipse에서 C++를 사용하기 위해서는 우선
맨 먼저 해야 할 일이 이 Tool chain을 먼저 선택해서 설치를 해야 합니다. 왜냐하면 eclipse 자체에서는
C++ 컴파일 환경을 가지고 있지 않다고 했죠!
CygWin 은 http://www.cygwin.com
MinGW 는 http://www.mingw.org
에서 다운로드 가능합니다. 당연히 모두 Open source입니다. 저는
mingw를 추천하지만 cygwin도 똑 같이 아무 문제 없이 윈도우즈용 프로그램을 만들
수 있습니다.
여러 가지(컴파일러-링크-binutil)가 있어
Tool chain 이라고 했지만 mingw나
cygwin은 하나만 설치하면 안에 다 있어서 간단해서 좋습니다.
그 다음 eclipse용 CDT를 설치합니다. 아마도 질문자께서는 이미 CDT는 설치하지 않았나 싶습니다. 현재 CDT는 4.0이 나와 있습니다.
CDT는 eclipse에서 C/C++를 개발하는
데 필요한 Plug-in입니다.
설치파일 다운로드
http://www.eclipse.org/cdt/downloads.php
간단한 도움말
http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.user/concepts/cdt_c_whatsnew.htm
그리고 eclipse에서 C/C++를 개발하려면 make utility의 사용법을 조금 배우는
것이 좋습니다. makefile이 필요 없는 프로젝트를 만들 수도 있지만 아무래도 make 를 쓸 줄 모르면 낭패를 당하기 쉽습니다.
채택 2059 (89.7%)
'Development > C' 카테고리의 다른 글
심볼 테이블 (Symbol Table) (0) | 2012.01.31 |
---|---|
프로그래머 10계명 (1) | 2011.09.25 |
심볼 테이블 (0) | 2011.07.31 |
C 언어 컴파일 과정 (0) | 2011.02.20 |
C - 문자 '0'과 문자 '\0'의 차이 그리고 NUL과 NULL의 차이 (0) | 2011.02.12 |