밍구-w64
Mingw-w64원본 작성자 | OneVision 소프트웨어 |
---|---|
개발자 | Kai Tietz, Jonathan Yong, 다양한 GNU 기고자 |
초기 릴리즈 | 2005; | 전(
안정적 해제 | 9.0.0 / 2021년 5월 22일; 전 |
기록 위치 | C, C++ |
운영 체제 | Microsoft Windows, Linux, MacOS |
유형 | 컴파일러 |
면허증 | 공용 도메인(헤더), GNU 일반 공용 라이센스(컴파일러 및 툴체인), Zope 공용 라이센스 |
웹사이트 | mingw-w64 |
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 구현을 제공한다.
- C99 지원 향상
- POSIX 스레드(pthreads) 지원(GCC의 libstdc++에서 C++11 스레드 관련 기능을 활성화할 수 있는 가능성 포함)
- 사용자가 32비트 라이브러리와 64비트 라이브러리를 병렬로 설치할 수 있는 GCC 멀티빌리브
- 유니코드 진입점(wmain/wWinMain)
- DDK(반응 시작)OS)
- DirectX(와인에서)
- 대용량 파일 지원
- Win64 지원
- x86-64의 구조화된 예외 처리(SEH) 또는 sjlj 대신 (gcc 4.8+)
- 다음과 같은 유용한 도구
gendef
(민GW의 개량형)pexports
효용) 및widl
(와인의 MIDL 컴파일러).
또한 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.txt
Windows 경로로 파일을 여는 편집기를 실행하려면C:\Users\John\file.txt
.[10][9]
MSYS2와 그것의 bash 환경은 Git과 GNU 옥타브가 공식 윈도우 배포에 사용한다.
컴파일러
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]
참조
- ^ "(MinGW-w64) History". MinGW-w64 Wiki. Retrieved 2016-02-18.
- ^ 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.
- ^ "(MinGW-w64) History". MinGW-w64 Wiki. Retrieved 2016-02-18.
- ^ 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.
- ^ Tietz, Kai (20 July 2014). "Re: Harmonizing mingwrt / w32api with mingw-w64". MinGW-dvlpr (Mailing list). Retrieved 12 June 2014.
- ^ "MinGW-w64". MinGW-w64.org. Retrieved 30 May 2013.
- ^ MSYS2: 공식 홈페이지, 코드 저장소
- ^ "ZSH on Windows via MSYS2". 26 July 2018.
- ^ a b c "How does MSYS2 differ from Cygwin · msys2/Msys2 Wiki".
- ^ 개요 기사 https://www.booleanworld.com/get-unix-linux-environment-windows-msys2에서 인용한 예
- ^ "Package: mingw-w64-x86_64-clang". MSYS2 Packages. Retrieved 12 February 2020.
- ^ Storsjö, Martin (23 April 2020). "mstorsjo/llvm-mingw". GitHub.
- ^ http://mingw.org/wiki/Interoperability_of_Libraries_Created_by_Different_Compiler_Brands
- ^ "MSVC compatibility". Clang 11 documentation.
- ^ "ld: win32". sourceware.org.
- ^ "GNU Binary Utilities Documentation". sourceware.org.