본문 바로가기
컴퓨터 & IT (Computer & IT)/Windows and Powershell

[Windows] Cygwins와 Mingw란?

by Physics 2022. 3. 20.
728x90

1. Cygwin란? 

• Windows에서 POSIX기반의 소프트웨어를 구동 및 개발할 수 있는 환경을 제공하는 프로그램 
  - POSIX (Portable Operating System Interface) 
  - Cygwin을 사용하면, UNIX와 유사한 환경에서 windows 기반의 응용 프로그램을 개발 및 테스트할 수 있음
  - cygwin은 리눅스 프로그램을 windows에서 바로 실행하도록 하는 프로그램이 아니다. 윈도우에서 실행시키기 위해선, 해당 파일의 소스를 cygwin에 알맞게 컴파일을 한 후 사용해야 한다.
  - MinGW 보다는 무겁지만, 더 쉽게 Unix 소프트웨어를 port할 수 있음 
  - 사용자는 Unix 쉘 (Bash, zsh)등을 Cygwin에서 사용가능 
• 
• GNU GPL로 배포되어 자유롭게 사용가능  
• GNU collection 
  - GNU: A large collection of free software used as an operating system and open-source tools similar to UNIX but designed for windows 
  - GNU 및 Berkely Software Distribution tools을 포함한 많은 무료 툴들을 제공함 
• cygwin website: https://www.cygwin.com/    

1) Cygwin의 기능
  • MinGW를 사용하여 네이티브 응용 프로그램 작성 
 
• sh 쉘 스크립트 지원 
  • rsh, ssh 등의 원격 접속 프로그램 지원 
  • X 및 openGL 등 지원 

2) cygwin1.d11 

- 하부 유닉스 응용 프로그램 인터페이스 (Susbtatial Unix API)를 제공하는 Unix Emulation Layer. 
- 해당 파일은 POSIX의 시스템 호출과 동등한 기능을 가지고 있으므로,

[1] http://mwultong.blogspot.com/2006/07/cygwin-cygwin.html   
[2] https://www.ciokorea.com/news/37474


Cygwins과 비슷한 프로그램? 

1. MobaXterm

2. MinGW
- GCC compiled for Windows and gives windows binary 
- desinged to use GNU development tools such as GCC to build native Windows applications 
- defined as a free and open source software development environment that create Microsoft windows applications
- provide minimum GNU compilers (a minimal set of POSIX tools) 
- designed to compile applications 
- Doesn't have unix-like designs
- an alternative to Microsoft visual C++ compiler 

 

 


Cygwins과 MinGW를 같이 쓰는 방법

 

 

S.N. Cygwin Mingw
1. Cygwin is designed to use POSIX API written a source code, and we can build them and run that build on Windows application.
POSIX is the Portable Operating System Interface that is a family of standards that maintains compatibility between operating systems.
Whereas, Mingw is designed to use the GNU development tool which is GCC to build window applications.

GNU is a large collection of free software which we can use as an operating system and GCC is a development tool.
2. In Cygwin, multiple POSIX applications are distributed and that has been recompiled to run on windows application. Whereas Mingw has small storage of POSIX tools only to support running GNU development tools.
3. These are built by using POSIX API and the user needs to install the Cygwin DLL, it requires Cygwin DLL compatibility layer because the programs are distributed with source code. Mingw tool uses Windows API to compile the applications, POSIX is cannot be used here. It does not require a compatibility DLL layer because the programs are not distributed with source code.
4. In Cygwin, the Cygwin DLL is used to translate the POSIX API calls into Window API calls. But in Mingw there is no DLL is used for translating the applications API, because Mingw is dependent on Windows API calls.
5.




Cygwin is able to compile Unix applications. It is not able to compile some Unix applications.
6. Cygwin does not need to run through an interpreter. It contains a compiler and a ‘C’ library.
7. It does not provide the ‘win 32 API’ functionality. It provides functions that are supplied by ‘win 32 API’.
8. Cygwin also provides Unix-specific functionality that is case-sensitive filenames. Whereas Mingw does not provide any specific functionality of Unix.
9. Cygwin is a command-line interface that is similar to Unix but designed for a Microsoft-based platform. On other hand, it is a command prompt where the user can run the ‘.configure’ file and then allow building applications.
10. If we want to use the advantage of POSIX advanced programming features and tools in Windows then use Cygwin. On other hand, if we want to use the advantage of the GCC cross-platform compiler in Windows then use Mingw.
GNU Development tool YES YES
Full set of POSIX tools (similar to a Linux Distribution) Yes Nop
Allow you to compile native Windows API applications Yes Yes
Allow you to compile POSIX API applications No Yes

 

 

Appendix 
일반적으로 GCC는 윈도우에서 설치가 될 수 있기는 하지만, 특별히 유용하지 않다. 이는 GCC가 UNIX환경을 위해 디자인이 되었고 UNIX 환경에서 운용이 되는 것을 가정했기 때문이다. 이러한 UNIX 환경은 GCC으로 생성된 코드들이 윈도우에서는 호환이 되지 않을 수 있음을 의미한다. 

 

[1] https://www.educba.com/cygwin-vs-mingw/ 

728x90

댓글