밍구-w64

Mingw-w64
민GW-w64
원본 작성자OneVision 소프트웨어
개발자Kai Tietz, Jonathan Yong, 다양한 GNU 기고자
초기 릴리즈2005; 17년 전(2005)
안정적 해제
9.0.0 / 2021년 5월 22일; 9개월(2021-05-22)
기록 위치C, C++
운영 체제Microsoft Windows, Linux, MacOS
유형컴파일러
면허증공용 도메인(헤더), GNU 일반 공용 라이센스(컴파일러 및 툴체인), Zope 공용 라이센스
웹사이트mingw-w64.org

Mingw-w64마이크로소프트 윈도우즈 PE 애플리케이션을 만들기 위한 무료 오픈 소스 소프트웨어 개발 환경이다.2005~2010년 민GW(윈도우즈용 미니멀리스트 GNU)에서 따왔다.

Mingw-w64는 GNU 컴파일러 컬렉션(GCC), Windows용 GNU Binutils(어셈블러, 링커, 아카이브 매니저), GNU 프로젝트GNU 디버거의 Windows 네이티브 빌드인 Windows API를 사용할 수 있는 Windows별 헤더 파일 세트 및 정적 가져오기 라이브러리를 포함한다.

Mingw-w64는 기본 Microsoft Windows 플랫폼에서 실행하거나, Linux(또는 다른 Unix)에서 크로스 호스트하거나, MSYS2 또는 Cygwin에서 "크로스 네이티브"를 실행할 수 있다.Mingw-w64는 대상 이름으로 x86용 32비트 및 64비트 실행 파일을 생성할 수 있음i686-w64-mingw32그리고x86_64-w64-mingw32.

역사

Mingw-w64는 원래 MinGW 프로젝트가 여러 개의 핵심 신규 API를 포함시키고 64비트 지원을 필요로 하는 등 코드 기반 업데이트에 대한 프롬프트가 없었기 때문에 클린룸 설계 원칙에 따라 OneVision Software에 의해 2005년에 만들어졌다.이어 2008년 원비전은 오픈소스로 남는다는 조건으로 대표 개발사 중 한 명인 카이 티에츠에 코드를 기증했다.[1]당초 민GW 사업에 처음 제출됐으나 비공개정보나 독점정보 이용 의혹으로 거절했다.[2][3][4]여러 가지 이유로, 민GW-w64 프로젝트의 공동 개발자 겸 설립자인 카이 티에츠는 민GW와 더 이상의 협력을 시도하지 않기로 결정했다.[5]

MinGW-w64는 다음을 [6]포함한 보다 완벽한 Win32 API 구현을 제공한다.

또한 Mingw-w64 프로젝트는 pthreads-win32와 유사한 래퍼 라이브러리인 winpetreds를 유지하며, GCC가 이를 스레드 라이브러리로 사용할 수 있도록 하여 기능적인 C++11 스레드 라이브러리를 만들 수 있다는 주된 차이점을 가지고 있다.<thread>,<future>그리고<mutex>.

MSYS2

MSYS2("최소 시스템 2")는 Mingw-w64와 Cygwin을 기반으로 하는 Microsoft Windows용 소프트웨어 배포 및 개발 플랫폼으로, Windows에 유닉스 월드의 코드를 배포하는 것을 돕는다.그것은 구 MSYS가 민GW에서 했던 것과 같은 역할을 한다.[7]

MSYS2는 유닉스 코드를 윈도우즈 시스템에 도입하려는 이 목표를 다른 여러 프로젝트, 특히 Cygwin 및 WSL(Windows Subsystem for Linux)과 공유한다.WSL은 리눅스 ELF 이진 파일을 Windows에서 실행할 수 있도록 하며 커널 호출에 대한 지원이 제한되고 그래픽 애플리케이션에 상당한 제한이 있다.Cygwin은 Windows EXE로 컴파일된 애플리케이션이 Unix에서처럼 실행되는 전체 POSIX 환경(Windows DLL)을 제공한다.[8]

MSYS2는 Cygwin처럼 완전한 환경을 제공하는 대신 개발 및 배치 플랫폼으로 작업한다.[9]

  • 패키지 매니저 및 표준 유닉스 시스템 툴과 함께 주요 MSYS2 환경(Cygwin의 에뮬레이션 코드와 유사하며, 실제로 에서 파생됨)이 있다.이러한 방식으로 MSYS2 자체를 관리할 때 에뮬레이트된 환경을 사용하여 표준 유닉스 툴을 수정하지 않고 사용할 수 있다.사용자가 네이티브 API 대신 POSIX 에뮬레이션 레이어에 의존하는 소프트웨어를 구축하고자 할 경우에 대비하여 MSYS2 에뮬레이션 환경에 빌드 툴을 설치할 수도 있다.
  • 또한 네이티브 컴파일러, 빌드 툴, 네이티브 윈도우즈 32비트 또는 64비트 프로그램을 구축하는 데 직접 사용할 수 있는 라이브러리를 포함한 4개의 환경이 제공된다.두 개의 네이티브 환경으로 구축된 최종 프로그램은 어떤 종류의 에뮬레이션을 사용하지 않으며 네이티브 윈도 프로그램처럼 실행되거나 배포될 수 있다.환경은 MINGW64와 MINGW32(gcc, msvcrt, libstdc++를 사용한 원래 MinGW-w64 환경), UCRT64(MINGW64를 ucrt에 적응), CLANG64(클랑과 libc++에 UCRT64 적응)이다.싸이윈이 민GW-w64 컴파일러와 라이브러리도 제공하는 반면, 이용 가능한 라이브러리 세트는 규모가 작고 별도의 접두사에 배치되지 않아 관리가 쉽지 않다.

주요 MSYS2 환경은 패키지 관리자(아치 리눅스 Pacman), bash shell 및 기타 Unix 프로그램을 제공한다.싸이윈 라이브러리 cygwin1.dll에서 파생된 런타임 라이브러리 msys-2.0.dll(약 20MB)을 사용하며, 싸이윈 개발을 추적하기 위해 정기적으로 업데이트된다.개발자가 (팩맨을 사용하여) 관리하고 도구를 실행할 수 있는 개발 환경으로 의도된 것이다.개발을 위해 불필요하다고 판단되는 특징들은 제거된다.[9]

싸이윈과 마찬가지로 MSYS2는 그것에서 출시된 비 MSYS2 소프트웨어의 경로 변환을 지원한다.예를 들어 명령을 사용할 수 있다.notepad++ /c/Users/John/file.txtWindows 경로로 파일을 여는 편집기를 실행하려면C:\Users\John\file.txt.[10][9]

MSYS2와 그것의 bash 환경은 GitGNU 옥타브가 공식 윈도우 배포에 사용한다.

컴파일러

GCC가 지원하는 대부분의 언어는 밍구-w64 포트에서도 지원된다.여기에는 C, C++, Objective-C, Objective-C++, Fortran, Ada 등이 포함된다.GCC 런타임 라이브러리를 사용한다(C++의 경우 libstdc++, Fortran의 경우 libgfortran 등).MSYS2는 LLVM의 clang to mingw-w64 패키지도 제공한다.Windows용 ARM(ARM) 지원aarch64-w64-mingw32그리고armv7-w64-mingw32).[11][12]

다른 C++ 컴파일러(Mingw-w64 GCC, Visual Studio 등)로 생성된 바이너리(실행형 또는 DLL)는 일반적으로 C++ 런타임의 차이로 인한 서로 다른 ABI와 이름망글링 방식의 사용으로 인해 연결되지 않는다.그러나 컴파일된 C 코드는 링크 호환성이 있다.[13]크랭은 예외로 MSVC의 C++ ABI를 대부분 윈도우에서 지원한다.[14]

바이너리 문서에는 다양한 창별 형식과 이를 위한 특수 도구의 취급에 대한 최신 정보가 수록되어 있다.[15][16]

참조

  1. ^ "(MinGW-w64) History". MinGW-w64 Wiki. Retrieved 2016-02-18.
  2. ^ Danny Smith (13 August 2007). "Re: Sub project for w64 header & crt". Newsgroup: comp.gnu.mingw.devel. Usenet: 000001c7dd83$9ae74310$fe6d65da@THOMAS. Retrieved 23 July 2020. From a cursory spot check of a few files, the crt sources in particular appear to contain too much undocumented material that I suspect may be derived from proprietary sources. I have since avoided looking at the mingw-w64 sources to avoid any taint of copyright abuse. I could well be wrong, but I would rather be safe than jeopardise the future of the mingw32, which has tried to maintain a "clean-room" ethic during its development.
  3. ^ "(MinGW-w64) History". MinGW-w64 Wiki. Retrieved 2016-02-18.
  4. ^ Marshall, Keith (19 July 2009). "Re: Harmonizing mingwrt / w32api with mingw-w64". MinGW-dvlpr (Mailing list). Retrieved 12 June 2014. However, we would require a formal audit of mingw-64 code, to ensure conformance with our requirements for truly open documentation of sources, before [merge of mingw-w64] could be completed.
  5. ^ Tietz, Kai (20 July 2014). "Re: Harmonizing mingwrt / w32api with mingw-w64". MinGW-dvlpr (Mailing list). Retrieved 12 June 2014.
  6. ^ "MinGW-w64". MinGW-w64.org. Retrieved 30 May 2013.
  7. ^ MSYS2: 공식 홈페이지, 코드 저장소
  8. ^ "ZSH on Windows via MSYS2". 26 July 2018.
  9. ^ a b c "How does MSYS2 differ from Cygwin · msys2/Msys2 Wiki".
  10. ^ 개요 기사 https://www.booleanworld.com/get-unix-linux-environment-windows-msys2에서 인용한 예
  11. ^ "Package: mingw-w64-x86_64-clang". MSYS2 Packages. Retrieved 12 February 2020.
  12. ^ Storsjö, Martin (23 April 2020). "mstorsjo/llvm-mingw". GitHub.
  13. ^ http://mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands
  14. ^ "MSVC compatibility". Clang 11 documentation.
  15. ^ "ld: win32". sourceware.org.
  16. ^ "GNU Binary Utilities Documentation". sourceware.org.

외부 링크

  • 공식 웹사이트 Edit this at Wikidata
  • MSYS2
  • MXE - Unix에 MinGW를 빌드하기 위한 Makefiles와 Win32/64, 사전 빌드된 패키지를 대상으로 하는 많은 공통 종속성 라이브러리를 이용할 수 있음