살아가는 이야기

mingw, msys2, cygwin, 어떤 것을 설치해야 할까? 본문

컴퓨터, 풀어그림

mingw, msys2, cygwin, 어떤 것을 설치해야 할까?

우균 2020. 8. 12. 14:20

Linux 개발자의 경우엔 크게 어려움이 없겠지만, 윈도 개발자라면 어떤 것을 설치해야 하는지 고민될 때가 있다. 고민하는 배경은 대부분 무료 C 컴파일러를 이용하기 위해서이다. 그 고민을 조금 나누어 보기 위해 이 글을 쓴다.

일단 확실한 것은 세 프로그램 모두 윈도에서 GCC를 지원하는 프로그램이라는 것이다. 그리고 프로그램 설치 크기는 다음과 같다.

mingw < msys2 < cygwin

가장 크기가 큰 cygwin은 POSIX 호환 unix 환경을 윈도에 구현하기 위한 것이다. 윈도에서 Unix를 사용하려면 VmWare나 VirtualBox 등 가상 계층을 사용할 수 있는데, 아무래도 윈도 시스템과 호환성이 떨어진다. 간단히 파일 공유 정도만 가능할 뿐이다. 하지만 cygwin은 DLL을 통해 cygwin 실행 파일을 윈도에서 실행할 수 있다.

그러다보니 단순히 컴파일러만 사용하기만 하면 되는데 cygwin처럼 거대한 시스템을 설치해야 하는지 의문이 생긴다. 그래서 최소한의 컴파일러와 명령어를 탑재한 환경이 나타났는데, 이것이 바로 mingw다. 따라서 mingw는 태생 자체가 간단히 컴파일하기 위한 것일 뿐이며 POSIX 호환은 목적이 아니다. mingw는 그야말로 최소한의 GNU 개발환경을 추구한다.

그런데 mingw를 사용하다 보면 Unix 라이브러리가 아쉬운 경우가 있다. 표준 라이브러리는 아니지만 간혹 Unix 서적에 보이는 curses나 readline을 사용하려면 mingw로는 불가능하다. 따라서 POSIX 호환까지는 아니지만 Unix 라이브러리를 어느 정도 제공하는, 경량화된 cygwin이 바로 msys이다. msys2는 더 향상된 msys이다. msys2가 제공하는 패키지는 msys2 홈페이지 링크(https://packages.msys2.org/base)에서 확인할 수 있다.

요약하면 다음과 같이 용도에 따라 설치하면 된다.

  • cygwin: POSIX 호환 Unix 서브시스템을 윈도에서 사용하고 싶을 때 설치
  • mingw: 표준 라이브러리를 지원하는 GNU 컴파일러와 최소한의 도구가 필요할 때 설치
  • msys2: GNU 컴파일러뿐 아니라 주요 Unix 라이브러리가 필요할 때 설치

각 설치 페이지로 이동하고 싶으면 위 목록에서 제목을 누르면 된다.

Comments