프로그래밍 방법론이라는 과목을 듣을려고 하는데 교수님이 실습을 위해서 MinGW를 설치하라고 하셨다. 이 번에 컴퓨터를 다시 포멧했기 때문에 다시 MinGW를 설치했는데, 조금 다른 프로그램을 이용해서 예전문서를 그대로 두고(또 누가 필요할지도 모르니..) 새롭게 글을 쓴다.

-------------------------------------------------------
 우선 이 글을 읽기 전 주위 할 점이 있다. 기존의 자신의 컴퓨터에 gcc 가 깔려있는지 확인하는 것이다. Dev-cpp 가 gcc를 내부적으로 이용한다. 예전 버전은 어떤지 모르겠지만 요즘 버전(요즘 버전이라 그랬지만 이 버전도 나온지 몇 년되었다..왜 더 이상 업그래이드를 안하는지 모르겠다.) 깔리면서 환경변수를 손대지 않지만, 예전버전은 그렇지 않을 수도 있다. 이 경우 조금 골치가 아파진다. 

 겉으로는 그냥 컴파일러로 보일지라도 내부적으로 gcc를 가지고 있는 컴파일러 들이 있다. 특히, 임베디드 환경에서 cross 컴파일로 gcc를 많이 사용한다. (크로스 컴파일러는 컴파일하는 환경과 그 프로그램을 이용하는 환경이 다를 경우 그렇게 부른다. 예를 들어 일반 PC에서 컴파일 해서 핸드폰에서 이용하는 프로그램을 만드는 컴파일러를 크로스 컴파일러라고 한다. )  한 번 자신이 사용하는 컴파일러에 gcc.exe 가 있는지 확인해 보아야 한다.
 
 단지 gcc.exe가 있다고 해서 문제 될 것은 없다. 이 부분에 환경변수를 걸드리고 있다면 조금 문제가 될 수 있다. 특히 GCC_EXEC_PREFIX 이 환경변수가 정의되고 있다면 조심해야 한다. 이 환경변수는 gcc의 라이브러리가 있는 곳의 디렉토리를 저장해둔다.  여러개의 gcc 가 사용될 때 이 때문에 다른 gcc가 이 환경변수를 오인하는 경우가 있다. 조금은 조심해야 한다. 

 이를 해결하기 위해서는  batch  파일을 이용해야 한다. 이 GCC_EXEC_PREFIX 이 환경변수를 지워버지고 이 환경변수가 필요한 프로그램에 다음과 같이 batch  파일을 만든다.

set PATH =%PATh%;컴파일러_path
set GCC_EXEC_PREFIX = 정의되어_있었던_라이브러리_디렉토리
start 실행할_컴파일러_이름

 다른 환경변수도 같이 있다면 이 것만으로 해결 안 되는 경우도 있을 수 있다. 나머지 부분은 나도 잘 모르겠다. gcc 문서를 통해 다른 환경변수가 뭐가 있는지 확인하고 자신의 컴퓨터에 설정되어 있는지 확인해야 한다.

-------------------------------------------------------

  http://sourceforge.net/project/showfiles.php?group_id=2435 에 가 보면 Automated MinGW Installer 가 존재한다. 이게 더 설치를 쉽게 도와준다. 

 이 프로그램을 실행한 다음 당연히 Next를 클릭해 준다. 그 다음 다음과 같은 화면이 나온다. 




느낌이 팍 오지 않는가. 첫 번째 Download and install 이다. 그러면 라이센스 표시가 나온다. MinGW가 여러개의 패키지고 그 프로그램마다 GPL 일 수도 있고, 다른 라이센스일 수도 있다는 설명과 몇가지 정보가 더 나온다. (솔직히 더이상 해석하기 싫다. ) 

 당연히 agree 해야 넘어 간다.








 그 다음 어떤 버전을 설치할 것인가 물어본다. 안전하게 current 를 설정했다. (이 정도 영어는 해석할 수 있겠죠..)






 그 다음 설치 패키지를 물어본다. 내 경우, 교수님의 설명서에 FULL 로 되어 있어서 FULL을 설정했다.




 다음은 설치위치를 물어본다. 내 경우는 거의 모든 컴파일러는 C:\tools에 모여있으므로 여기에 MinGW 디렉토리(폴더)를 새로 만들어서 설치했다. 




 설치를 시작하면 인터넷으로 다운받아 자동으로 설치하게 된다.






 이제 설치가 끝났다.

 다행히 이 프로그램의 설치하고 나서 환경 변수를 건드리지 않는 것 같다.  (여러개의 gcc를 사용할 때 이 부분 때문에 각자의 gcc가 엉켜버릴 수 있다. )

 gcc 사용법은 리눅스 사이트에서 찾아보길 바란다. (KLDP 위키를 추천한다. )
------------------------------------------------------
2007년 10월 14일 현재는 이 프로그램을 다운받기 위해서는 hhttp://sourceforge.net/project/showfiles.php?group_id=2435  에서
MSYS: Supplementary Tools 밑에서 Current Release: msysDTK-1.0.1 Notes(2006-10-31 06:24) 라는 버전으로 찾다보면 exe  로 된 DTK를 발견할 수 있다.
-------------------------------------------------------

앞에 있었던 minGW 와 msys 를 먼저 설치해야 한다. msys 를 보조하는 툴이라고 생각하면 된다. autoconf, automake, cvs, ftp , perl 파일들이 들어있다. 다운로드 받는 곳 http://www.mingw.org/download.shtml 에서 msysDTK-1.0.1.exe 같이 exe 파일로된 msysDTK 파일을 찾아라. (조금 파일이 오래되어 보인다. 2003 년 1월 이라니. )

실행하면 별다른 이상없이 설치할 수 있다. 다만 앞에서 설치했던 miGW 와 msys 와 함께 디렉토리를 어떻게 구성해야 할 지 고민할 지 모르겠다. 따로 독립적으로 설치해도 상관없을 것 같다. 나의 경우 컴파일과 관계된 것은 C:\tools 이라는 디렉토리를 만들어 다 집어 넣었다. (이클립스라던지 파이썬, GTK 이런것들이 이 디렉토리에 포함되어 있다. ) 그리고 MinGW 도 들어있다. (C:\tools\MinGW 이렇게 되어있다. ) 이 안 bin 파일에 gcc 같은 것들이 바로 깔려있다. 이 안에 그냥 C:\tools\MinGW\msys 와 C:\tools\MinGW\msysdtk 를 깔아 났다. 디렉토리 들이 독립적이지 않고 MinGW 밑에 다 하의디렉토리로 집어 넣았다. 이렇게 해도 구성상에 문제는 없을것 같다.

앞의 글에서 나왔듯이 msys 을 설정파일을 설정만 잘 해주면 어느 디렉토리에 위치하는지는 중요하지 않는것 같다. (msys\etc 에 있는 파일들을 설정잘해주어야 한다. )

설치하는데는 다른 문제는 없다. 이 것을 사용하기 위해서는 설정을 잡아 주어야 한다. msysDTK 를 설치한 하위디렉토리를 보면 설치된 프로그램들은 bin 폴더에 있다. 여기를 살펴보면 어떤 것 들은 .exe 확장자를 가져 윈도우즈 콘솔(cmd)에서 사용가능하지만 autoconf 같은 파일은 윈도우즈 콘솔에서 사용불가능 하다. 바로 앞에서 설치한 msys 를 이용해야 한다. 그렇다고 msys 콘솔(msys 를 더블클릭하면 나오는 창) 을 이용해 바로 사용가능 한 것은 아니다. 바로 path 를 잡아주고 fstab 파일(확장자가 없이 파일이름만 있다. )을 이용해 마운팅 시켜주어야 한다.

리눅스에서 마운팅이란 장치를 파일처럼 접근할 수 있게 도와준다. 플로피디스크나 CD롬을 접근할 때 이용된다. 멀티부팅을 한다면 윈도우즈가 깔려있는 논리적 또는 물리적 하드디스크를 접근할 때도 사용된다.(자세한 것은 리눅스를 깔고 사용하면 알게된다. ) 여기서도 비슷한 개념이다.
앞 글에서 설치한 msys 가 있는 디렉토리로 가서 etc 폴더 안에있는 fstab(확장자는 없다. 이 파일이 없다면 fstab.sample 파일을 복사하여 fstab 으로 이름을 바꾼다. )를 수정한다. 맨 밑부분에 하나 추가한다. 나 같은 경우는
C:/tools/MinGW/msysdtk /msysdtk
이다. \ 기호대신 / 를 사용해야 한다. msysdtk 를 설치한 디렉토리를 앞에 지정해준다. 저장하고 나서 msys 가 설치된 디렉토리에 msysdtk 폴더를 만들어 준다. 이제 마운팅 시킬 준비는 끝난 것이다.

다음으로 path 를 잡아주어야 한다. msys 폴더안의 ect 폴더의 profile 을 수정한다. 맨 끝에
export PATH="/msysdtk/bin:$PATH"
를 추가해 준다.

이제 msys 콘솔을 실행해서 autoconf 를 실행하면 입력파일이 없다는 에러가 나온다. 이러면 설치가 된 것이다.
$ autoconf
autoconf: no input file
앞에서 minGW 를 설치하는 방법을 설명했다. minGW 는 컴파일러라고 생각하는게 좋을 것 같다. 좀더 posix 환경을 구축하기 위해서는 더 많은 일을 해야 한다.

ls 이런 기본 리눅스 명령어들을 처리해 줄 수 있는 shell 환경이 필요하다. 이게 MSYS 이다. 모든 것을 다 해주는 것은 아니지만 기본적인 것은 처리해 준다. MS-DOS 식으로 말하자면 내부명령어 수준은 처리해 주는 것 같다. 리눅스 셀 프롬프트를 보여준다.

우선 http://www.mingw.org/download.shtml에서 프로그램을 다운 받자. bin 이라고 쓰여있는 것들이 컴파일된 것들이다. 이것을 사용하자. 기본적인 경로를 잡아주고 나면 콘솔창이 뜬다.
====================================================================
This is a post install process that will try to normalize between
your MinGW install if any as well as your previous MSYS installs
if any. I don't have any traps as aborts will not hurt anything.
Do you wish to continue with the post install? [yn ]
================================================================
무슨말인지 해석이 안된다.(??) 그냥 계속할 수 있게 "y" 를 입력하자.

============================================================
Do you have MinGW installed? [yn ]
=============================================================
MinGW 를 이미 인스톨했는지 물어본다. 앞 글에서 이미 설치했으므로 'y' 를 누른다.

=====================================================
Please answer the following in the form of c:/foo/bar.
Where is your MinGW installation?
====================================================
어디에 설치되어 있는지 디렉토리를 알려달라고 한다. 근데 주의할 것은 / 이 표시이다. 절대 \ 이 표시로 디렉토리 표시를 하지 말아라. 이게 잘못된다고 해도 다시 나중에 설정해주면 된다. 너무 겁먹지 말자.

난 분명 제대로 입력했는데 에러 표시가 뜬다. 그냥 엔터, 엔터, 아무키를 누르면서 계속 설치하자.

한 번 실행해 보자. 설치한 디렉토리 및 msys.bat 를 클릭하면 사용할 수 있다. ls, pwd 같은 기본적인 명령어를 사용할 수 있다.
gcc 를 눌려보면
===================================
sh: gcc: command not found
==================================
라고 나온다. 아직 설정이 안끝났으니 종료하자. 설치한 디렉토리에 etc 라는 디렉토리가 생겼다. 이 안에 fstab.sample 라고 있는데 이 파일을 복사한후, 이름을 fstab 이라고 고친다. (확장자는 없다. ) 이 파일안에
#Win32_Path Mount_Point
c:/mingw /mingw
c:/ActiveState/perl /perl
라고 쓰여진 부분이 있다. 대충 감이 오지 않는가. 앞에 있는 c;/mingw 대신에 실제로 minGW 가 있는 디렉토리를 적어준다.
C:/tools/MinGW /mingw
같이 고쳐준다. (위는 내 경우 이다. ) \ 대신 / 를 집어 넣어야 한다. 이게 리눅스, 유닉스식 디렉토리 표시방식이다.
아는 사람은 알겠지만 리눅스에서 fstab 파일은 자동으로 마운팅할 때 사용하는 파일이다.
다시 프로그램을 실행시키고 gcc 를 눌러보면 gcc 가 작동한다.
===============================================
$ gcc
gcc.exe: no input files
================================================

이제 설치가 끝났다. 다음에는 msysDTK( MSYS Developer Tool Kit) 설치를 해보겠다. 여기에는 autoconfig, automake 같은 프로그램이 있다고 한다.(나도 아직 안 설치해 봤다. )