2007년 5월 18일 금요일

Eclipse를 사용하여 NS2 통합개발환경(IDE) 만들기

요약: 이 글은 윈도우에서 Cygwin에 NS2를 설치했을 때 사용하는 팁에 관한 글이다. 유닉스 환경에서 프로그래밍을 하는 것이 익숙치 않거나, IDE(통합개발환경)에서 NS2(Network Simulator)를 사용하고 싶었으나 방법을 모르는 분들을 위해 정리하였다. Eclipse에 CDT(C/C++ Development Tooling)를 사용하여 NS2의 소스 트리를 임포트하는 방법을 설명한다. 이 방법은 유닉스의 기본 Makefile을 사용하는 방법이므로, Makefile이 있는 프로그램이면 Eclipse를 사용하여 통합개발환경을 구축할 수 있다.


Code::Blocks에 관한 글 에서도 밝힌 바 있지만, 이미 vi 에디터를 사용하여 익숙한 개발 환경을 만들어 사용하는 분들도 있겠지만, IDE 환경을 편하게 생각하는 사람들도 매우 많다. 나는 특히 Vi를 매우 싫어하는데, 손에 익은 핫키(예를 들자면 Ctrl+S)들을 무의식적으로 눌렀을 때 받는 스트레스가 Vi가 싫은 이유 중 하나이다. Vi를 잘 꾸미면 더 가독성을 높일 수 있겠지만, 내 경우는 터미널에서 Vi를 띄워서 글을 읽으면 코드가 눈에 잘 들어오지 않는 이상한 시각인지구조를 갖고 있다.

설명을 하는 순서는 다음과 같다. 유닉스 환경에서 eclipse를 사용하는 분들은 1에서 eclipse에 CDT 플러그인을 설치하고, 3.1)과 3.2)의 과정만 따라하면 NS2를 위한 IDE 환경 구축이 끝난다.
1. NS를 사용하기 위한 프로그램들 설치
2. 환경변수 설정 (Option)
3. 프로젝트 생성


1. 설치해야 할 것들

- Cygwin
Cygwin은 윈도우에서 유닉스 환경을 만들어 주는 프로그램 패키지이다. 사실, Cygwin에서 돌아가는 모든 프로그램들은 윈도우용 프로그램이지만, 이 작은 프로그램들을 사용해 유닉스처럼 사용할 수 있다는 것은 매우 놀랍다. 유닉스용으로 개발된 많은 프로그램들이 Cygwin에 포팅되어 있고, 소스코드에서 Cygwin에서 컴파일을 지원하는 경우도 많다. 오늘 설명하는 NS2의 경우가 바로 대표적인 사례다. 예전에는 NS2를 사용하려면 따로 리눅스 머신을 설치하거나, 공용으로 시뮬레이션 서버를 만들어 두곤 했었는데, 이제는 Cygwin이 있으므로 그런 수고가 많이 줄어들었다.

- NS2
NS2는 네트워크 시뮬레이션을 할 때 많이 사용하는 시뮬레이션 툴이다. 네트워크 시뮬레이션이라고 하면 그 용도가 한정적인 것 같지만, 서버를 배치하고 서버들 간의 네트웍을 구성하여 각각의 워크로드를 분석하는 데도 적용 가능하거나, 네트웍 장비의 필요 스펙 등에도 활용할 수 있을 것으로 생각한다. NS2에 대해서는 나중에 다시 글을 쓸 기회를 갖고 싶은데, 시간이 허락할 지 모르겠다. 이런 이유로 NS2에 대해서는 이것으로 패스~

-
이클립스(Eclipse)
이클립스는 Java를 개발하기 위해 많이 사용하는 툴이지만 플러그인이 다양하기 때문에 어떻게 사용하느냐에 따라 활용 방법은 매우 다양해진다. Java 개발 툴로서는 매우 강력한 IDE 환경이지만, 다른 언어에서는 그만큼 강력하지는 않은 것이 좀 아쉬운 점이긴 하다. C와 C++를 사용하려면 Eclipse에 CDT를 플러그인으로 설치해야 한다.


2. 환경변수 설정

Cygwin을 설치하면 유닉스의 각종 유틸리티들이 윈도우 프로그램 형태로 설치되고, Cygwin 디렉토리는 루트("/")로 인식된다. Cygwin에서 설치되는 많은 프로그램들을 패스(PATH) 환경변수에 넣어 두면 윈도우 터미널에서도 Cygwin의 모든 유틸리티들을 사용할 수 있다. 그런데, 이 방법을 원치 않는 경우에는 스킵하여도 좋다. 3. 프로젝트 생성에서 PATH 환경변수를 추가하지 않고, 따로 환경변수를 입력하면 되므로 패스가 지저분해지는 게 싫은 분들은 그냥 다음 단계로 넘어가시길.

1) 내 컴퓨터 -> 속성 -> 고급 탭-> 환경 변수(N)를 선택한다.
2) 시스템 변수에서 PATH를 선택하고 편집 버튼을 클릭한다.
3) PATH 환경 변수의 제일 마지막에 [Cygwin이 설치된 디렉토리]bin을 추가한다. (C:에 설치했다면 C:cygwinbin)


3. Eclipse에서 프로젝트 생성


1) New -> Project -> C++ -> Stadnard Make C++ Project를 선택한다.
2) Use default location이 기본적으로 체크되어 있는데 이것을 해제하고, NS2 소스코드가 설치된 디렉토리를 선택하고, 프로젝트 이름을 입력한 후 Next 버튼을 누른다. (NS2소스코드가 설치된 디렉토리는 ns-allinone-2.xx/ns-2.xx이다. ns-allinone-2.xx 디렉토리는 tcl, tk, otcl 등의 소스코드를 담고 있는 디렉토리가 함께 포함되므로, 선택할 필요도 이유도 없다. tcl이나 tk의 소스코드를 고치고 싶지 않다면 말이다.)

※ 유닉스에서 eclipse를 사용하는 경우에는 gcc나 make의 PATH가 이미 잡혀 있는 경우가 많으므로, 3)을 하지 않아도 무방하다.

3) Environment tab -> Select 버튼을 선택한다. 위(2. 환경변수 설정)에서 PATH 환경변수를 설정한 경우 3-1을, 그렇지 않을 경우 3-2와 같이 설정한다.
3-1) PATH 환경변수가 선택되도록 체크한다.
3-2) NEW 버튼을 누른 후 다음을 입력하자.
Name: UTILPATH (다른 이름을 입력하여도 무방하다)
Value: [Cygwin이 설치된 디렉토리]bin


이제 모두 완료되었다. Ctrl+B를 눌러 Build를 해 보자. 에디터 창 아래의 Console에 뭔가 주루룩 올라가고 컴파일이 정상적으로 된다면 다 제대로 되었다고 보면 된다.