Monday, November 16, 2009

오늘 문득 떠오른 생각..

오늘 문득 떠오른 생각...

소위 엔터프라이즈 어플리케이션을 만든다고 하면 개발환경에 대해서 한마디씩 하지 않는 개발자는 없다.
한다는 말이야 다 비슷비슷하다. 엔터프라이즈 어플리케이션 개발에 사용할 수 있을 만큼 "검증"되어 있느냐?
"검증"이란 표현이 참 의미심정하긴 한데, 대강 아래의 사항을 만족하면 검증되었다고 하는것 같다.
1. 저렴하고 풍부한 개발자 집단의 존재(제일 중요하다 -_-)
2. 신뢰성
3. 안정성
4. 지속적인 기술 지원
5. 그래서 레퍼런스

참 신기한 것은 서버측 개발환경에 대해서는 방금 언급한 요소들을 꼬치꼬치 따지고 드는 반면에
클라이언트측 개발환경에 대해서 검증 여부를 따지고 드는 프로젝트를 본 적이 없는거 같다.
한물간 트렌드이긴 하지만, 여전히 많이 쓰는 클라이언트측 개발 환경, 즉 WEB 개발 환경이란게
"IE + J(ava)script + HTML"에 NCRM이나 FLEX 같은 X-internet 또는 RIA 플랫폼을 추가하는거다.
X-internet 솔루션 내지 RIA 플랫폼은 난 잘 모르겠으니 논외로 치고 "IE + javascript + HTML"에 대해서 이야기를 해보자.

1. 저렴하고 풍부한 javascript와 HTML 개발자 집단이 존재하는가?
=>존재한 적도 없고 존재할 리도 없다. 하지만 못하는 개발자는 없으니 저렴하고 풍부하긴 한다.
=>화면개발과 서버개발을 분리하는 프로젝트가 없기도 하거니와
=>설계자와 개발자의 역할/책임 분리조차 똑부러지게 못 하는 실정이니 하려고 해도 되지도 않는다.
=>모 프로젝트는 N*솔루션을 사용해서 화면개발과 서버개발을 분리한다더니, 서버 개발자보고 화면 정의서 쓰라고 하더라.
=>하지만 이거 잘 하는 개발자는 SI 안 하더라 ㅋ

2. 신뢰성
=>애시당초 클라이언트 사이드는 믿지 말라는게 공리이니 넘어가자.
=>하지만 고객은 IE에 무한한 신뢰를 보내지. IE가 자기대신 일할 수 있도록 인공지능을 구현해달래.

3. 안정성
=>IE의 안정성이 검증되었다는 말은 들어본적이 없다.
=>특히 IE를 플랫폼으로 돌아가는 J(ava)script는 과연 안정적일까?
=>보안과 편리한 에디팅과 쉬운 파일 업로드를 제공하기 위해 설치되는 무수한 ActiveX들 간의 경쟁 속에
=>어느순간 뻗어버리거나 "메모리가 부족해!"라는 비명조차 지르지도 않고 창이 닫혀버리는 IE7를 접하는 나는 뭘까? ㅋ
=>하지만 고객은 IE가 뻗어도 개발자에게 달려가지!

4. 기술지원
=>IE에 대한 기술지원을 MS와 체결했다는 소식을 들어본적이 없다.
=>MS에서 IE에 대한 기술지원료를 받고 있다는 소식을 들어본적도 없다.
=>하기사 테이블로 뭐든지 그려내는데, CSS 버그 따위에 대한 기술 지원을 받을 필요는 없지! 안그래도 프로젝트는 적자

5. 레퍼런스
=>많다. 정말로 많다. 그런데 웹기반이라는 말을 하지 IE기반이라고 레퍼런스 이야기를 하는걸 들어본적은 없다.
=>충격!!! IE가 곧 웹이었던것이다.

뭐, 이런식으로 따지기 시작하면... WINDOWS XP도 클라이언트 환경으로 적합한지 검증해야 하는건가 ㅋ

그런데 고객은 보는 것만 가지고 평가하고, 보는것이라곤 클라이언트 단에서 제공하는 화면이 90% 이상이니

클라이언트 환경에 대한 검증은 프로젝트의 원할한 진행과 성공에 있어 중요한 요소라고 보아야 한다.

하지만 검증하는 사람은 없고, 그렇다고 클라이언트 환경에서 발생한 오류의 원인을 정확히 구분해낼 능력도 없으니...

(얼른 여기를 떠야...ㅌㅌㅌ)

퍼옴!!동감내용

Sunday, November 15, 2009

Eclipse 3.4 (CDT)와 Cygwin으로 C/C++ 개발환경 설정하기

Eclipse 3.4 (CDT)와 Cygwin으로 C/C++ 개발환경 설정하기

|
최근 정말 재미있는 책을 하나 읽고 있습니다. 바로 Short Coding이란 책입니다. 천천히 읽고 있는 관계로 독서평은 나중에 올리구요~
Short Coding을 하기 위한 환경을 Eclipse 3.4 CDT와 Cygwin으로 설정하였습니다.

아시다시피 Eclipse는 C/C++에도 막강한 기능을 발휘하는 툴이라고 생각합니다. 특히 gcc 컴파일러가 여러모로 추천되더군요~ 제가 특정한 플랫폼을 타켓으로한 C/C++ 어플리케이션을 개발하려는 것이 아니고 Short Coding 에 나오는 예제들을 중심으로 확인하려는 것이 가장 큰 목적이므로 별다른 고민없이 구축하였습니다.

특히 GCC를 사용할 수 있다는 큰 장점이 있습니다.

Step by Step으로 확인해 보겠습니다.


1. Cygwin 설치
첫번째로 Cygwin(http://cygwin.com/)에 접속하여 Cygwin을 다운로드 받아서 설치하여야 합니다. Cygwin(http://cygwin.com/) 사이트의 첫 페이지의 중간에 "Install or update now! (using setup.exe)"를 클릭하면 Windows OS용 설치 파일을 다운로드 받을 수 있습니다.


다운로드 받은 setup.exe 파일을 더블클릭하면 아래와 같은 Cygwin Setup Programe이 나타납니다.


Choose Installation Type을 "Install from Internet"을 선택하면 인터넷에서 필요한 설치 파일을 다운로드 받아 설치하게 됩니다. 당근 "Install from Internet" 를 선택하시면 됩니다.


설치 경로는 기본적으로 C:\cygwin 입니다.


그냥 패키지 디렉토리인데 따라 갑니다.


Connection Type을 선택하면 됩니다. Direct Connection을 선택합니다.


http://ftp.daum.net을 선택합니다. 우리나라에 있는 Server이기 때문에 빠른 속도로 설치할 수 있습니다. 참고로 ftp://ftp.daum.net을 선택하시면 ini 파일이 없다는 에러가 발생합니다.


기본적인 설치 패키지를 다운로드 받습니다.


패키지를 선택하는 화면입니다. 여기서 gcc를 설치하기 위하여 Devel을 클릭합니다.


Devel Category에는 여러가지 개발 관련된 Package들이 존재합니다. 반드시 gcc-g++와 gdb 및 make 관련된 패키지를 선택하시기 바랍니다. 아울러 추가적으로 관심있는 여러가지 패키지를 선택하셔서 설치하시면 좋습니다. 생각보다 정말 많은 패키지들이 지원됩니다. :-)


이후 다음 버튼을 눌러서 본격적으로 설치하시면 Cygwin의 설치가 완료됩니다.



2. Cygwin 관련 환경변수 설정하기
Cygwin 을 모두 설치하시면 Windows OS의 경우 다음과 같이 환경변수를 설정해주시는것이 좋습니다.

CYGWIN_HOME이라는 변수명을 설정하시고 설치하신 Cygwin의 경로를 넣습니다.

그 후 PATH에 ;%CYGWIN_HOME%\bin;%CYGWIN_HOME%\usr\bin; 와 같은 환경 변수를 더 추가해 주시기 바랍니다. 이렇게 환경 변수를 설정해주셔야 Eclipse CDT에서 별다른 문제 없이 gcc로 개발을 하실 수 있습니다.

이렇게 환경 변수를 잘 설정하셨다면 gcc-3이나 gdb를 cmd 창에서 치시면 다음과 같이 나타납니다.



3. Eclipse CDT 설치하기

Eclipse 사이트(http://www.eclipse.org/)로 가셔서 Eclipse IDE for C/C++ Developers (79 MB)를 클릭합니다.


만약 기존에 사용하고 있는 Eclipse IDE에서 CDT 기능을 활용하시려면, CDT관련 Plugin 설치를 하시면 됩니다. 다만 Eclipse IDE for C/C++ Developers가 C/C++를 개발하기 편하도록 모든 설정이 되어 있으므로 Eclipse IDE for C/C++ Developers를 사용하겠습니다.


당근 Eclipse는 JVM 기반하에서 돌아갑니다. 따라서 JVM을 설치하여야 합니다. 만약 JVM 설치 방법을 알고 싶으시다면http://blog.java2game.com/345 를 참고하시기 바랍니다. 자 적당한 디렉토리에 eclipse를 압축해제 하시고 eclipse.exe를 더블 클릭하시면 다음과 같이 Eclipse CDT가 나타납니다. 참고로 본 예제는 Eclipse Galileo 3.4 버전입니다.


자 Hello World를 찍어봐야겠죠 ;-) 다음과 같이 C++ 프로젝트를 생성합니다.


Project Name을 HelloWorld로 하겠습니다. 주의하셔야 할 것은 Toolchains에 Cygwin GCC가 나타나지 않는다면 환경변수 설정이 잘못된 것이니 확인하시기 바랍니다. Hello World C++ Project를 선택하시면 쉽게 C++ Project를 구성하실 수 있습니다.


Basic Settings를 설정합니다.


그러면 다음과 같이 기본적인 템플릿을 바탕으로 HelloWorld.cpp 파일이 자동 생성됩니다.


Ctrl + F11이나 다음과 같이 실행하시면 Console View에서 Hello World!!!를 확인하실 수 있습니다. :-)




Eclipse라는 강력한 IDE를 Java 말고 C/C++를 개발하시거나 테스트하시는데도 활용하시면 참 좋을 것 같습니다. gcc의 강력함도 함께 즐길 수 있는 Cygwin과 함께 말이죠 ;-)

더 자세한 내용은 http://www.eclipse.org/callisto/c-dev.php 를 참고하세요~

Saturday, November 14, 2009

Eclipse 플러그인 스파이 기능

테크 트렌드

kenu kenu
2009-10-19 08:14:05.0
http://www.okjsp.pe.kr
Eclipse 플러그인 스파이 기능
---

이클립스의 플러그인 개발에 유용한 기능입니다. 3.4 부터 포함되었는데, 요즘 제 눈에 들어오는군요. 김성안님의 블로그에 잘 정리되어있습니다. http://pragmatic.kr/pages/1433164

Eclipse 3.4 Ganymede에 포함된 플러그인 스파이는 이런 문제를 한방에 해결해 줍니다. 다음의 두 단계만 따라하세요.

  1. 먼저 관심 대상 화면을 클릭해서 활성화 합니다.
  2. 그 다음 SHIFT + ALT + F1을 클릭합니다.

아래 화면과 같이 JUnit의 화면이 포함된 플러그인과 해당 클래스 이름 등을 표시해 줍니다. 짱입니다.

from: http://pragmatic.kr/pages/1433164

plugin 개발에 대한 수요가 조금씩 늘어나는 것 같은데 아주 추천할만한 기능입니다.

Thursday, November 12, 2009

gcc make 프로그램 한꺼번에 컴파일

조그마한 크기의 프로젝트가 아니라면, 하나의 프로젝트를 위해서 보통 4-6 개 혹은 수십개의 쏘쓰 파일로 이루어 진다. 이러한 중/대 규모의 프로젝트를 테스트하고 실행하기 위해서, 일일이 gcc 를 사용한 다는것은 상당한 노력과 신중함을 필요로하게 된다. 이러할때 Unix 에서 제공하는 "make" 를 사용하게 되면 프로젝트 관리를 좀더 수월하게 할수 있다. 이번 문서에스는 "make" 를 사용하는 방법에 대해서 알아보도록 하겠다.

만약 5개의 쏘쓰로 이루어진 프로그램을 테스트 하기 위해서 컴파일을 한다면 다음과 같은 방식을 사용해야 할것이다.

$ gcc -c 1.c
$ gcc -c 2.c
$ gcc -c 3.c
$ gcc -c 4.c
$ gcc -c 5.c
$ gcc -o myprg 1.o 2.o 3.o 4.o 5.o


매번 myprg 라는 실행파일을 만들어 내기 위해서 위의 방식대로 컴파일 하는건 보통 일이 아니다. 그나마 위의 경우는 간단한 형태이고 각종 gcc 옵션, library 링크 include 파일이 패스지정등이 들어가게 되면, 코딩하는 시간보다 컴파일 하는 시간이 더걸리는 사태가 벌어질것이다.

이러한 일련의 작업을 자동화 시켜주는 프로그램이 있으면 좋을것이다라고 누군가 생각을 했고 그래서 나온게 make 라는 도구(프로그램) 이다. make 를 사용하면 위의 모든 일련의 컴파일을 자동적으로 관리 해줄뿐만 아니라, 최근에 바뀐 쏘쓰만 컴파일해서 링크시켜주는 일까지 알아서 처리한다. 예를 들어 1.c 를 수정했다면 2.c, 3.c 4.c, 5.c 는 그대로 두고 단지 1.c 만을 컴파일 해서 object 파일을 만들고, 나머지 기존에 만들어져 있던 object 파일과 링크를 시켜준다. 그러므로 시간을 크게 절약할수 있으며, 프로그래머는 "어떻게 컴파일 될 것인가" 라는 부수적인 것에 신경쓰지 않고 코딩에만 전념할수 있다.

object 파일을 만들고 이들을 link 시켜서 최종 실행 파일을 만들기 위해서, 프로그래머는 보통 어떤 source를 필요로 하고, 어떤 헤더파일이 필요로 하는지, 그리고 어떤 라이브러리가 필요로 하고 있는지, 최종적으로 만들어질 실행파일의 이름이 무엇인지를 알고 있어야 한다. 마찬가지로 make 역시 "컴파일 규칙"을 알아야 할필요가 있다. 이러한 규칙을 정한 설정파일을 참조해야 하는데 보통 "Makefile" 라는 이름의 파일을 참조한다. Makefile 에는 해당 쏘쓰를 컴파일 하기 위해서, 어떤 컴파일러를 사용해야 하는지, 컴파일후 어떤 실행파일(Target) 를 만들어야 하는지, 각 object 파일의 의존성관계는 어떠한지, 컴파일시 어떤 헤더파일디렉토리와, 라이브러리를 참조할지 등에 대한 규칙을 담고 있다. 다음은 Makefile 의 간단한 형태이다.

1 CC = gcc
2 CXX = g++
3 CFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG
4 CXXFLAGS = -pipe -Wall -W -O2 -DNO_DEBUG
5 INCPATH = -I/usr/local/include/mysql
6 LINK = g++
7 LIBS = -L/usr/local/lib/mysql -lmysqlclient -lcrypt

8 # FILE
9 SOURCES = main.cc
10 sql.cc

11 OBJECTS = main.o
12 sql.o

13 TARGET = myprg

14 # Implict rules
15 .SUFFIXES: .cc .c

16 .cc.o: $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
17 .c.o: $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<

18 # build rule

19 all: $(TARGET)
20 $(TARGET): $(OBJECTS)
21 $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)

22 clean:
23 -rm -f $(OBJECTS) $(TARGET)
24 -rm -f core

25 # complie
26 main.o: main.cc
27 sql.o : sql.cc


각줄의 번호는 설명의 편의를 위해서 붙인거다.
언뜻 보면 쉘스크립트 언어와 꿰유사한 분위기를 풍김을 알수 있을것이다. make 에서는 make 파일의 내용을 쉽고 간편하게 작성하도록 하기 위해서 "매크로" 를 제공한다. 매크로의 사용은 shell 에서의 변수사용과 매우 비슷하다. 매크로명 = 매크로값 사용방법은 $(매크로명) 식으로 필요할때 불러쓰면 된다.


1 번줄 부터 13 번줄까지는 각종 매크로를 지정했음을 알수 있다.
15 번줄의 .SUFFIXES 는 파일의 확장자에 따른 컴파일 규칙을 정의해 주기 위해서 make 에서 내부적으로 제공하는 키워드로, 컴파일 규칙을 정의할 파일의 확장자를 적어준다.
16 - 17 번째 줄은 .SUFFIXES 에서 정의한 확장자를 위한 컴파일 규칙을 적용한 것이다. 16 번째줄은 .cc 에 대한 빌드규칙은 ":" 이하의 규칙에 따라서 컴파일을 하고, 컴파일후 만들어지는 object 파일은 확장자".o"를 붙여라는 뜻이다. 16 번째 줄을 매크로 치환을 해서 완전한 명령어로 바꾸어 보면 (sql.cc 를 컴파일한다고 가정하자) $ g++ -c -pipe -Wall -W -O2 -DNO_DEBUG -I/usr/local/include/mysql -o sql.o sql.cc 이 된다. 17 번째 줄의 경우는 확장자가 .c 인 파일에 대한 빌드 규칙인데, 이때는 g++ 대신 gcc 를 사용하도록 규칙이 정해져 있다.
위에서 보면 $@ 가 사용되었는데, 이는 타켓의 전체이름을 나타내는 생략형이다. .cc.o 에서 타겟의 이름은 파일명.o 로 하라고 지정되어 있음으로 sql.cc 에 대해서 $@ 는 sql.o 로 치환된다. 눈치 챘겠지만 "$<" 는 원래 파일 명을 나타낸다.

19-24 는 build rule이 정의되어 있다. make 프로그램에 아규먼트를 주는 형식으로 시행되는데, 아래와 같은 방법으로 실행한다.

$ make all
$ make clean


make all 명령을 실행하면 g++ 일 이용해서 실행파일을 만들어내고, make clean 을 실행하면 그동안 생성되었던 모든 오브젝트 파일과 core 파일을 지우게 된다. 물론 이러한 build 룰 같은것은 사용자가 필요로 할경우 얼마든지 새로운 기능을 추가시킬수 있다.

지금까지 make 의 사용법을 간단하게 나마 알아 보았다. 지금까지의 설명은 make 파일의 가장 일반적이고 간단한 사용의 방법이다. 그렇다고 하더라도 위의 정도만 사용할줄 알아도 대부분의 프로젝트 프로그램을 관리하는데에는 문제는 없을것이다. 이 문서에서 제공하지 않는 더 고급의 기능은 스스로 조금씩 배워나가면 될것이다.

다음번에는 Makefile 를 자동적으로 만들어주는 tmake 란 도구에 대한 문서를 제공하도 록 하겠다.

이전의 문서 "make 를 이용한 프로젝트 관리(1)" 에서 우리는 간단하게 나마 make 도구의 유용성에 대해서 알아보았다. 그렇긴 하지만 make 를 사용하기 위해서 Makefile 를 만드는 데에는 꽤 많은 시간이 든다.
이러한 문제를 해결하기 위해서 Makefile 을 자동적으로 만들어주는 tmake 란 프로그램이 있는데, 이번에는 tmake 를 사용해서 Makefile 을 쉽게 생성하는 방법을 알아보도록 하겠다.

tmake 는 QT를 제작한 회사로 유명한 troll 이라는 회사에서 배포하는 프로그램이다. 원래 tmake 는
QT프로그램을 위한 Makefile 를 생성하지만, 약간만 수정하면 쉽게 자신의 프로젝트에 맞는 kefile 를 만들수 있다.

우선 프로그램을 다운로드받는다.
다운로드 받은 파일은 적당한 디렉토리에 옮겨서 압축을 풀면 bin 디렉토리가 생성되는데, 여기에 있는 파일들중 progen 과 tmake 2개의 실행파일을 적당한 실행 디렉토리로(/usr/local/bin 과 같은) 복사해 준다.
그다음에 lib 디렉토리 역시 적당한 디렉토리(/usr/local/tmake/lib) 로 복사해준다.
이로써 tmake 를 사용하기 위해서 필요한 모든 파일의 설치가 끝이 났다. 이제 tmake 를 사용하기 위한 환경설정을 해주어야 하는데, 만약에 bash 쉘이라면 .bash_profile 에 아래의 내용을 포함시키도록 한다.
TMAKEPATH=/usr/local/tmake/lib/linux-g++
expotr TMAKEPATH


c 쉘이라면 .cshrc 파일을 수정하면 된다.

setenv TMAKEPATH /usr/local/tmake/lib/linux-g++


이로써 tmake 를 사용하기 위한 모든 환경설정이 끝났다. 이제 직접 tmake 를 이용해서 Make 파일을 생성시켜보도록 하겠다.

우선 Makefile 를 생성할 프로그램 쏘스가 있는 디렉토리로 이동한다. 그후 progen 을 이용해서 project 파일을 생성한다.

[yundream @localhost test]$ progen -o test.pro


progen 을 실행하면 test.pro 란 파일이 생성되었음을 알수 있을것이다. test.pro 는 프로젝트 파일로, 현재 디렉토리에 어떤 쏘쓰파일(.c .cc) 이있는지 어떤 헤더파일이 있는지에 대한 정보를 가지고 있다. tmake 는 이 파일을 참조 하여 Makefile 을 만들어낸다.
이제 tmake 파일을 실행해서 Makefile 를 만들면 된다.

[yundream @localhost test]$ tmake -o Makefile test.pro


위의 명령을 실행하면 tmake 는 test.pro 파일을 참조해서 Makefile 를 생성하게 된다.

이렇게 해서 Makefile 를 매우 쉽게 만들긴 했지만 tmake 가 모든것을 알아서 해주는 만능은 아니다. 게다가 서문에서 미리 말했듯이 tmake 프로그램이 원래 QT 응용 프로그램에 최적화되어 있기 때문에 약간 손을 봐줄 필요가 있다.
tmake 를 이용해서 생성된 Makefile 에서 LIBS 라인을 자신의 프로그램에 맞게 수정하면 된다.
그리고 MOC 와 UIC 는 필요 없는 라인이므로 삭제하면 된다.

수정전 LIBS = $(SUBLIBS) -L$(QTDIR)/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
MOC = $(QTDIR)/bin/moc
UIC = $(QTDIR)/bin/uic


수정후 LIBS = -lcrypt -lm


물론 LIBS 부분은 사용자마다 달라진다.

이제 make 를 실행하기만 하면 test 라는 실행파일이 만들어진다. 이로써 tmake 의 사용방법을 알아보았다. tmake 가 완벽한 프로그램은 아니지만 프로젝트 관리를 위한 시간을 대폭 줄여줄것이다.

eclipse CDT console scanf 버그(windows환경)

eclipse CDT console scanf 버그(windows환경)

이클립스 CDT 콘솔 이용해서 실행시

아래와같이 scanf 함수가 있다면 아무것도 출력되지 않습니다.
먼저 입력을 한 이후 화면이 출력되는 현상을 볼수 있습니다.

----------------------------------------------------------------
#include

int main()
{
int nAge;
int nBirth;

printf("Age : ");
scanf("%d", &nAge);

printf("Age = %d\n", nAge);
return 0;
}
----------------------------------------------------------------

해결방법: printf나 출력문 이후에 버퍼를 비워줌 > fflush(stdout);
예)
----------------------------------------------------------------
#include

int main()
{
int nAge;
int nBirth;

printf("Age : ");
fflush(stdout);
scanf("%d", &nAge);

printf("Age = %d\n", nAge);
return 0;
}
----------------------------------------------------------------


버그에대한 수정답변
It is not easy to "fix" and it depends on the OS.

The line buffering policy for the stdio or for C++ iostream, is base on whether
or not the output stream maps to a real console or a pty for Linux user.

On Linux, we find a way to do this by creating a pseudo pty, this will
work for debug launch and normal launch(in most of the case).

On Windows, for the GDB backend we create a command console that is
associated with the application, this will work for debug launch.

On Windows for normal launch we have no solution, so the output will not
be line buffered. So yes this is still a problem for windows.

This bug was flip to fix because it was targetting Linux(Unix-All) and
a solution was provided.

The other comments are for windows and folks should make a new PR for it.

Wednesday, November 11, 2009

Eclipse와 MinGW를 이용한 C/C++ 개발 [ S/W 팁 & 사용법 ]


Eclipse와 MinGW를 이용한 C/C++ 개발 [ S/W 팁 & 사용법 ]

제목은 너무 거창하지만 간단히 Visual Studio 없이 이클립스를 이용한 C / C++ 개발 방법입니다.

이클립스는 이전 버전부터 C / C++ 개발을 위한 툴을 제공해 오고 있었습니다.
다만 컴파일러등을 같이 제공하고 있지 않아서 별도로 구해야 합니다.
돈을 지불할 수 없는 학생이나 개인들이 사용한다면 좋겠죠? =)

예전에 소개드렸던 Dev-C++과 비슷하다 생각하시면 됩니다.


1. 우선 GCC등의 컴파일러를 구해야 겠죠.
쉽게 MinGW를 구해서 설치합니다.
윈도우에서 Unix/Linux 개발 환경을 구성해주는 패키지입니다.

다운로드는 이곳 링크에서 받습니다.
가장 위에 있는 Automated MinGW Installer를 받으면 됩니다.
설치는 간단합니다. 설치할건 기본적으로 선택되어 있는 tool과 g++ compiler, MinGW Make 입니다.
원래는 패키지중 Current 버전을 설치해야 하는데 제 PC에선 설치가 되지 않아 현재 버전이 아닌 이전 버전을 설치했습니다.

모두 설치가 되었다면 확인이 필요하겠죠? 커맨드에서 아래 처럼 확인해 봅니다. 혹시 아래처럼 실행되지 않는다면 시스템 패스를 확인해 봅니다. 기본 경로에 설치했다면 C:\MinGW\Bin을 패스에 추가합니다.



2. 개발에 필수인 디버거도 필요하겠죠? =)
이곳에서 디버거를 다운 받습니다.
압축을 풀어보면 아래 그림과 같은 디렉토리가 보일겁니다.
MinGW 디렉토리랑 유사한 구조로 되어 있는데 그냥 덮어 쓰면 됩니다.
간단하죠?



3. 마지막으로 이클립스를 구해야 겠죠?
다운로드 페이지에서 C/C++ 버전을 다운받고 압축을 풀어 실행하면 됩니다.
간단한 테스트 코드를 만들고 컴파일하고 디버깅하고 실행해보면 되겠습니다.


Ps. 다른 분들은 make 관련 에러가 있다고 하는데 저는 이상하게 없네요.
만약 문제가 생긴다면 이클립스의 설정에서 make를 mingw32-make.exe로 변경해 보세요.



트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://namomo.egloos.com/tb/3965470 [도움말]

    덧글

    • 멋쟁이 2009/10/22 23:54 # 삭제 답글

      글 덕분에 해결 하였습니다. 글을 제 블로그에 담아 갈께요
      안되면 제 블로그에 삭제요청해 주시면 삭제 하겠습니다.
      감사합니다.
    • 냐모 2009/10/23 00:08 #

      네 출처만 남겨주시면 마음대로 가져가셔도 됩니다.
      도움이 되었다니 저도 기쁘네요.
      즐거운 하루 보내세요~

    re: C에서 char형으로 받은거 int형으로 변환하기!

    re: C에서 char형으로 받은거 int형으로 변환하기!

    kanghd132005.09.25 02:25

    우선 방법은 2가지가 있습니다.

    1) atoi 형을 이용합니다.

    #include

    #include

    void main()

    {

    char chr = '7';

    int a;

    a = atoi(chr);

    }

    2) 만약 숫자가 1자리수일 경우, '0'을 뺍니다.

    #include

    void main()

    {

    char chr = '7';

    int a;

    a = chr - '0';

    }

    그리고 덧붙여서 말하자면, int형을 char형으로 전환하는 방법을 (뽀나스로) 설명해드리겠습니다.

    1) 숫자가 1자리수인 경우 : 역으로 '0'을 빼는게 아니라 '0'을 더합니다.

    2) itoa를 이용한 경우.

    #include

    #include

    char chr[100];

    void main()

    {

    int a = 12345;

    itoa(a , chr , 10);

    }

    itoa( 숫자값 , 값이 들어갈 string 배열 , 숫자값을 변환할 진수 )

    입니다. 만약 숫자값이 5이고 뒤에 변환할 진수를 2진수라고 할 경우

    101이 값으로 들어가게 되겠죠.

    3) sprintf를 이용한 방법

    #include
    #include

    char chr[100];

    void main()

    {

    int a = 12345;

    sprintf(chr , "%d" , a);

    }

    sprintf( string 배열 , A);

    인데요. A 부분에는 printf 사용하듯이 하시면 됩니다.

    ★ itoa, atoi 을 지원하는 헤더파일로는 ctype.h, stdlib.h 등이 있습니다...

    물론 실력이 미숙하지만(...) 도움되셨는지요..?

    출처 : 지구 위의 60억 인간 중 한 명 OOO군의 머릿속