1. Cygwin과 MinGW 소개


윈도우즈 위에서 리눅스 프로그램을 돌리는 방법이 있습니다.


VMWare나 VirtualBox 같은 가상머신 툴로 유닉스던 리눅스던 깔아서 쓰는 방법을 말하는 것이 아닙니다.


bash, gcc, vim, nano, git 기타 등등 GNU 기반 프로그램들을 말 그대로 윈도우즈상에서 돌리는 방법이 있습니다.


이를 위해서 리눅스 소프트웨어를 윈도우즈용으로 포팅해 놓은 툴을 이용합니다.


그런 툴을 활용하면 리눅스 타겟으로 개발하던 소스코드를 가져와서 .dll이나 .exe 형식의 윈도우즈용 바이너리로 컴파일해서 쓰는 것까지도 할 수 있습니다.


그 툴이라는 것은 두 가지가 있습니다.


1) Cygwin: 시그윈. 유명한 프로그램이에요. 근데 이건 이제 한물 갔습니다.

2) MinGW: 이게 최근 대세입니다. 크크. 요즘은 시그윈 따위는 잘 쓰지 않습니다.


1) Cygwin


시그윈은 그냥 뼛속까지 에뮬레이터입니다.


윈도우즈 기반으로 GNU/Unix 기능을 가상으로 구현하고 리눅스 쉘이랑 완전 똑같이 동작해요.


리눅스와의 호환성이 매우 뛰어나고 기능이 빵빵하지만 크기가 크고 무겁습니다.


2) MinGW


MinGW는 시그윈 초기 버전의 포크입니다.


시그윈에서 불필요한 기능을 다 빼 버려서 굉장히 가볍습니다.


유닉스를 하나부터 열까지 가상으로 구현할 필요가 뭐가 있습니까.


gcc랑 ls, cd, pwd, cp, mv, rm 이런 거만 쓰면 충분하거든요.


쓰잘데기 없는 걸 죄다 에뮬레이션하지 않기 때문에, Bash를 지원하기는 하는데 윈도우즈 위에서 약간 윈도우즈 방식으로 동작합니다.


무슨 말이냐면요.


리눅스 스타일로 윈도 API도 다 쓰고 윈도우즈 기반 프로그램들 라이브러리들도 그냥 그대로 다 쓸 수 있습니다.


근데 유닉스 API (POSIX 이런 거) 같은 걸 별로 많이 지원을 안 해요.


그러니까 진짜 리눅스 같이 돌아가지는 않고 윈도우즈에서 리눅스 기분 좀 내고 싶을 때 쓰는 겁니다.


MinGW는 시그윈보다 무척 가볍지만 리눅스랑 호환성은 조금 낮아요.


시그윈이나 MinGW를 쓰는 이유는 둘입니다.


1) 리눅스에서 쓰던 툴 윈도우즈에서도 리눅스 느낌 나게 간지나게 bash로 쓰고 싶으니까.


예를 들면 윈도우즈에서 git bash가 MinGW 기반으로 돌아갑니다.

git 같은 툴은 다른 것보다 bash로 쓰는 쪽이 훨씬 편합니다.


2) 리눅스 타겟으로 개발하던 프로그램을 어느날 갑자기 윈도우즈용 바이너리로 컴파일해서 쓰고 싶으니까.


리눅스용 프로그램을 윈도우즈용으로 포팅하는 것입니다.

시그윈이나 MinGW를 통해서 gcc로 컴파일하면 윈도우즈용 바이너리인 .dll이나 .exe 형식의 파일이 생성됩니다.


2. MinGW + MSYS2 + git bash



1) MSYS


MinGW 자체는 텅텅 빈 껍데기고 거기에 리눅스 프로그램을 깔아야 그 플랫폼을 써 먹을 수 있습니다.


그래서 MinGW를 설치할 때 항상 함께 설치하는 것이 MSYS입니다.


MSYS는 패키지 매니저를 지원하고 bash, make, grep 같은 필수적인 리눅스 유틸리티들이 전부 들어있는 멋진 꾸러미입니다.


많은 사람들이 MinGW와 MSYS를 구분하지 못하는데 MSYS는 MinGW가 아니라 MinGW 기반으로 MinGW의 틀 안에 들어가는 일종의 패키지에요.


MSYS의 현재 최신 버전은 MSYS2입니다.


2) Git과 MSYS2 함께 사용하기


설치하는 방법을 알아봅시다.



위 사이트에서 MSYS2랑 Git 인스톨러를 내려받고, 적당히 마음에 드는 곳을 선택하여 각각 서로 다른 경로에 설치합니다.


(https://sourceforge.net/projects/mingw/에서 MinGW + MSYS 인스톨러를 배포하고 있지만 이것은 구닥다리이기 때문에 사용하지 않습니다.)


설치는 특별한 것이 없습니다. 자기가 어떤 경로에 설치하는지만 잘 보고 "다음", "다음", "다음"을 눌러 주세요.


- 1) MSYS2를 설치하면 그 경로에 MinGW 하나가 함께 딸려 들어옵니다.


- 2) Git을 설치해도 그 안에 MinGW가 하나 함께 딸려 들어옵니다.


둘이 각각 따로인데 잘 구분해서 Git의 MinGW는 git 명령어 사용 용도로만 쓰고 그 외에는 MSYS2를 씁니다.


(현재로서는 윈도우즈용 Git이 MSYS2와의 통합을 지원하지 않기 때문입니다.)


(본문의 끝입니다.)


Top