맨위로가기

MinGW

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

MinGW는 윈도우용 최소 GNU를 의미하며, 윈도우 운영체제에서 GNU 툴체인을 사용할 수 있도록 하는 프로젝트이다. 1998년 시작되어 GCC의 윈도우 포팅으로 시작되었으며, MSYS를 통해 유닉스 셸 환경을 제공하여 윈도우 소프트웨어와의 상호 운용성을 높인다. 64비트 및 새로운 API 지원을 위해 MinGW에서 분기된 Mingw-w64가 존재하며, MSYS2는 Mingw-w64와 Cygwin을 기반으로 한 개발 플랫폼이다. MinGW는 C, C++, Objective-C 등 다양한 언어를 지원하며, 윈도우 API를 직접 호출하여 Cygwin과 달리 호환성 계층 DLL을 요구하지 않는다. 한국에서는 게임 개발, 임베디드 시스템 개발 등 다양한 분야에서 활용되며, 리눅스 환경에서도 윈도우용 바이너리 개발에 사용된다.

더 읽어볼만한 페이지

  • 크로스 컴파일러 - 소형소자 C 컴파일러
    SDCC는 다양한 마이크로컨트롤러 아키텍처를 지원하는 C 언어 컴파일러로 임베디드 시스템 개발에 널리 사용되며, 인텔 8051, Zilog Z80, Microchip PIC, Motorola 68HC08, STMicroelectronics STM8 등 다양한 아키텍처에 대한 실행 파일 생성 및 여러 운영체제에서 사용이 가능하다.
  • 포트란 컴파일러 - GNU 컴파일러 모음
    GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 1987년 처음 출시한 자유 소프트웨어 컴파일러 시스템으로, C, C++, Fortran, Ada, Go 등 다양한 프로그래밍 언어를 지원하며 여러 명령어 집합 아키텍처와 플랫폼에서 널리 사용된다.
  • C++ 컴파일러 - GNU 컴파일러 모음
    GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 1987년 처음 출시한 자유 소프트웨어 컴파일러 시스템으로, C, C++, Fortran, Ada, Go 등 다양한 프로그래밍 언어를 지원하며 여러 명령어 집합 아키텍처와 플랫폼에서 널리 사용된다.
  • C++ 컴파일러 - C++빌더
    C++빌더는 델파이와 동일한 IDE를 사용하는 엠바카데로 테크놀로지스에서 개발한 C++ 통합 개발 환경이며, 윈도우, macOS, iOS, 안드로이드 등 다양한 플랫폼을 지원하고 VCL, FireMonkey, CLX와 같은 GUI 라이브러리를 제공한다.
MinGW - [IT 관련 정보]에 관한 문서
기본 정보
저자콜린 피터스
개발자MinGW 프로젝트
MinGW 설치 관리자
MinGW 설치 관리자
최초 릴리스1998년 7월 1일
최신 버전GNU BinUtils—2.32-1, Installation Manager—0.6.3, WSL—5.4.2
최신 버전 출시일2021년 4월 12일
프로그래밍 언어C, C++
운영 체제마이크로소프트 윈도우, 유닉스 계열 ( 크로스 컴파일러로)
장르컴파일러
라이선스퍼블릭 도메인 (헤더), GNU 일반 공중 사용 허가서 (컴파일러 및 툴체인)
웹사이트MinGW 프로젝트 공식 웹사이트
저장소MinGW 프로젝트 저장소
기타 정보
전신없음
후신Mingw-w64

2. 역사

MinGW는 원래 mingw32 (Minimalist GNU for W32)라고 불렸으나, 32비트 바이너리를 만드는 것으로 제한되는 것처럼 보일 수 있어 숫자 32를 제거했다.[27][28] 1998년 콜린 피터스(Colin Peters)는 GCC시그윈 포팅만으로 초판을 만들었다.[29][30] 이후 Jan-Jaap van der Heijden이 GCC의 윈도우 네이티브 이식판을 만들고 Binutils과 Make를 추가했으며, Mumit Khan은 Anders Norlander의 윈도우 시스템 헤더를 포함하여 윈도우 특화 기능을 추가했다. 2000년에는 소스포지로 이전하여 커뮤니티 기반으로 개발이 진행되었다.[5][6]

2005년 9월 MinGW는 소스포지의 "이 달의 프로젝트"로 선정되었다.[30] 2013년에는 32비트와 64비트 MinGW 패키지를 모두 포함하는 MSYS2 프로젝트가 시작되었다.[31] 2018년, MinGW는 메일링 리스트 관리 문제로 소스포지와 이견이 발생하여 OSDN으로 이전했다.[8]

2. 1. 포크와 발전

MinGW의 원래 이름은 mingw32 (Minimalist GNU for W32)였다.[27][28] 1998년 콜린 피터스는 GCC시그윈 포팅만으로 이루어진 초판을 만들었다.[29][30] 이후 Jan-Jaap van der Heijden는 GCC의 윈도우 네이티브 이식판을 만들고 Binutils과 Make를 추가하였다.[5][6] Mumit Khan은 Anders Norlander의 윈도우 시스템 헤더들을 포함하여 윈도우 특화 기능들을 패키지에 더 추가하였다.[5][6] 2000년에는 프로젝트가 소스포지로 이동되어 커뮤니티의 도움을 받아 개발에 집중하게 되었다.[5][6]

2005년 9월, MinGW는 소스포지의 "이 달의 프로젝트"로 선정되었다.[6]

MSYS (Minimal System)는 기본 Windows 소프트웨어와의 더 나은 상호 운용성을 목표로 하는 Bourne 셸 명령줄 인터프리터 시스템으로 도입되었다.[7]

2007년에는 64비트 및 새로운 API 지원을 위해 Mingw-w64가 MinGW에서 포크되었다.[9][24] Mingw-w64는 현재 널리 사용되며, MSYS2와 함께 윈도우용 소프트웨어 배포 및 개발 플랫폼으로 활용되고 있다.[9]

2018년, MinGW는 메일링 리스트 관리 문제로 소스포지에서 OSDN으로 이전했다.[8]

3. 명칭

MinGW는 "Minimalist GNU for Windows"(윈도우용 최소 GNU)의 줄임말이다.[1] Win32 API용 헤더를 제공하기 때문에 Mingw32라고도 불린다.[1]

MinGW를 발음하는 데에 정해진 기준은 없다.[2] 흔히 "밍 위", "민기 더블유", "밍 더블유", "민 그누"라고 발음한다.[2] 간혹 발음 상의 편의성을 위해 "민지"로 발음하기도 한다.[2]

4. 특징

MinGW와 MSYS를 결합하면 작고 알찬 환경을 만들 수 있다. 이로써 컴퓨터의 레지스트리나 파일 항목에 영향을 주지 않고 이동식 미디어에서 불러와 사용할 수 있다. Cygwin은 설치와 관리가 더 복잡하다.

MinGW에서는 응용 프로그램들을 크로스 컴파일할 수 있다. 즉, 개발자들이 MSYS의 윈도우 설치판 없이도 Cygwin 없이 윈도우에서 실행될 소프트웨어를 컴파일할 수 있다. 현재는 윈도우 비스타윈도우 7과도 완전히 호환된다.

MinGW와 MSYS는 모두 합쳐도 가볍다. 이들은 자체적으로 완결 가능한 환경이므로 이동식 미디어에서도 사용할 수 있다. 컴퓨터의 레지스트리나 파일에는 영향을 주지 않는다. Cygwin은 더 많은 기능을 제공하지만 설치가 필요하며, 그 이후의 관리도 복잡하다.

리눅스 등 윈도우가 아닌 다른 OS에서도 크로스 컴파일을 지원하여, 윈도우 OS를 사용하지 않고도 윈도우용 앱을 개발할 수 있다.

5. Cygwin과의 비교

MinGW는 Cygwin 1.3.3에서 포크된 버전이다. Cygwin과 MinGW는 둘 다 유닉스 소프트웨어를 마이크로소프트 윈도우로 포팅하는 데 사용되지만, 그 목표가 다르다.[20]

Cygwin은 완전한 POSIX 레이어를 윈도 상에서 제공하여 호환성을 중시하고, 필요한 경우 성능을 희생한다. 반면 MinGW는 자유 컴파일러와 도구 모음을 제공하는 데 힘을 쏟지만 성능을 우선한다. MinGW는 POSIX API를 제공하지 않기 때문에, Cygwin으로 컴파일할 수 있는 유닉스 응용 프로그램들을 컴파일할 수 없다. 구체적으로, 특정한 POSIX 기능을 요구하는 응용 프로그램들과 POSIX 환경에서 실행될 것으로 예정된 프로그램들이다. SDL, wxWidgets, Qt, 또는 GTK+와 같은, 여러 플랫폼을 지원하는 라이브러리들을 사용하여 작성된 응용 프로그램들은 보통 시그윈에서 하던 것처럼 MinGW 안에서 쉽게 컴파일할 수 있다.[20]

Cygwin은 주요 유닉스 시스템 호출 및 라이브러리의 전체 구현을 포함하는 완전한 POSIX 레이어를 제공하는 것을 목표로 한다. 성능보다 호환성을 더 우선시한다. 반면에 MinGW는 단순성과 성능을 우선시한다. 따라서 `fork()`, `mmap()`, `ioctl()`과 같이 윈도 API를 사용하여 쉽게 구현할 수 없는 특정 POSIX API를 제공하지 않는다.[20]

Cygwin으로 작성된 윈도 프로그램은 정적으로 연결되지 않는 한 프로그램과 함께 배포해야 하는 카피레프트 호환성 DLL 위에서 실행된다. 동적으로 연결된 경우, 프로그램은 Cygwin 소스를 얻을 수 있는 위치에 대한 정보도 제공해야 한다. MinGW 기반 프로그램은 윈도 API에 대한 직접 호출로 컴파일되므로 호환성 계층이 필요하지 않다.[20]

MinGW에서는 네트워크 프로그래밍의 read/write를 recv/send로 바꿔야 한다. 이는 Windows의 소켓이 Winsock이며, POSIX와 다르기 때문이다. 단순한 툴체인인 MinGW에서는, 이 변경은 앞으로도 필수이다.[22][23]

6. 구성 요소

MinGW 프로젝트는 GNU 툴체인의 다양한 포트(port)를 포함하여 여러 가지 핵심 구성 요소와 보조 패키지를 유지 관리하고 배포하며, 이는 GCC 및 binutils와 같은 패키지로 번역된다.[12][13] 이러한 유틸리티는 윈도우 명령 줄에서 사용하거나 IDE에 통합될 수 있다. 패키지는 mingw-get을 통해 명령 줄을 사용하여 설치할 수 있다.[14]

MinGW는 `.lib` 및 `.dll` 규칙에 따라 명명된 동적 라이브러리와 Unix 및 Unix 유사 시스템에서 일반적으로 사용되는 `lib.a` 명명 규칙을 따르는 정적 라이브러리를 지원한다.

또한, ''MSYS''(minimal system, 최소 시스템)로 알려진 MinGW의 구성 요소는 rxvt를 포함한 가벼운 Unix와 유사한 셸 환경과 autoconf 스크립트 실행을 가능하게 할 수 있는 충분한 POSIX 도구의 Windows 포트를 제공하지만,[15] C 컴파일러나 대소문자를 구분하는 파일 시스템은 제공하지 않는다.[16]

''mingwPORTs''는 MinGW 소프트웨어 모음에 대한 사용자가 기여한 추가 기능이다. 이러한 "애드온"을 미리 컴파일된 바이너리 패키지로 제공하는 대신, 사용자가 원본 소스 코드를 자동으로 다운로드하고 패치한 다음 빌드하고 설치하는 프로세스를 안내하는 대화형 Bourne 셸 스크립트 형태로 제공된다. mingwPORT에서 응용 프로그램을 빌드하려는 사용자는 먼저 MinGW와 MSYS를 모두 설치해야 한다.[17]

7. 지원 언어

MinGW는 GCC가 지원하는 대부분의 프로그래밍 언어를 지원한다. 여기에는 C, C++, Objective-C, Objective-C++, Fortran, Ada가 포함된다. GCC 런타임 라이브러리(C++용 libstdc++, Fortran용 libgfortran 등)가 사용된다.[10]

8. 링크 호환성

C++ 컴파일러(MinGW, 비주얼 스튜디오 등)로 생성된 바이너리 파일(실행 파일 또는 DLL)은 일반적으로 링크 호환이 되지 않는다. 하지만 컴파일된 C 코드는 링크 호환된다.[11]

9. 한국에서의 활용

한국에서는 MinGW가 게임 개발, 임베디드 시스템 개발, 오픈 소스 프로젝트 개발 등 다양한 분야에서 활용된다. 특히 윈도우 환경에서 리눅스/유닉스 기반 개발 도구를 사용하려는 개발자들에게 유용하다. 크로스 컴파일 환경 구축을 통해 MinGW 바이너리를 리눅스에서도 개발할 수 있다.[32] Wine을 사용하면 테스트를 간편하게 수행할 수 있다.[32]

10. 64비트 개발 환경

MinGW 프로젝트는 64비트 환경용 컴파일러 세트를 제공하지 않는다. MinGW-w64[24]와 MinGW 프로젝트의 MSYS를 조합하면 구축할 수 있다.

참조

[1] 웹사이트 Download Package list https://osdn.net/pro[...] 2023-02-04
[2] 웹사이트 (MinGW on) MinGW http://mingw.org/wik[...] 2008-07-07
[3] 웹사이트 GNU Coding Standards https://www.gnu.org/[...] Free Software Foundation 2013-07-01
[4] 간행물 Libtool Re: Naming a project gnu-win32? https://lists.gnu.or[...] 2013-05-21
[5] 웹사이트 History {{!}} MinGW http://mingw.org/his[...] MinGW.org 2012-07-09
[6] 웹사이트 (sourceforge's) Project of the Month https://sourceforge.[...] SourceForge.net 2012-07-09
[7] 웹사이트 (wiki:) MSYS http://www.mingw.org[...] MinGW.org 2020-04-16
[8] 간행물 Announcement of migration to OSDN.net https://sourceforge.[...] 2018-01-21
[9] 문서 MSYS2 https://www.msys2.or[...]
[10] 웹사이트 (MinGW And) C99 http://mingw.org/wik[...] 2011-03-29
[11] 웹사이트 Interoperability of Libraries Created by Different Compiler Brands {{!}} MinGW http://mingw.org/wik[...]
[12] 웹사이트 (MinGW) FAQ http://mingw.org/min[...] MinGW.org 2012-07-09
[13] 웹사이트 MinGW - Minimalist GNU for Windows http://sourceforge.n[...] Sourceforge.net 2012-07-09
[14] 웹사이트 MinGW Command Line Interface Installer http://www.mingw.org[...] 2012-06-14
[15] 웹사이트 (wiki:) MSYS http://www.mingw.org[...] MinGW.org 2016-02-18
[16] 웹사이트 (wiki:) MSYS http://www.mingw.org[...] MinGW.org 2016-02-18
[17] 웹사이트 (wiki:) mingwPORT http://www.mingw.org[...] MinGW.org 2012-07-09
[18] 웹사이트 (MinGW) Licensing Terms http://www.mingw.org[...] MinGW.org 2012-07-09
[19] 웹사이트 (MinGW:) About Cygwin http://www.mingw.org[...] MinGW.org 2012-07-09
[20] 문서 Cygwin Licensing Terms http://cygwin.com/li[...]
[21] 문서 FAQ | MinGW http://www.mingw.org[...]
[22] 문서 Winsock Functions (Windows) http://msdn2.microso[...] Microsoft Developer Network
[23] 문서 '[Mingw-users] about fprintf stderr support on mingw' http://sourceforge.n[...]
[24] 문서 Mingw-w64 - GCC for Windows 64 & 32 bits https://mingw-w64.or[...]
[25] 문서 http://softwarecommu[...]
[26] 웹인용 Download Package list https://osdn.net/pro[...]
[27] 웹인용 GNU Coding Standards https://www.gnu.org/[...] Free Software Foundation 2013-07-01
[28] 메일링인용 Libtool Re: Naming a project gnu-win32? https://lists.gnu.or[...] 2013-05-21
[29] 웹인용 (MinGW's) History http://mingw.org/his[...] MinGW.org 2012-07-09
[30] 웹인용 (sourceforge's) Project of the Month https://sourceforge.[...] SourceForge.net 2012-07-09
[31] 웹인용 How are msys, msys2, and msysgit related to each other? http://stackoverflow[...] 2015-04-01
[32] 문서 모질라 위키-빌드 https://wiki.mozilla[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com