[cygwin] 설치 및 세팅
2025년 1월 21일
Cygwin #
윈도우에서 POSIX 소프트웨어를 구동하거나 컴파일할 수 있도록 호환 계층을 둬서 리눅스를 윈도우 상에서 에뮬레이션을 할 수 있게 도와주는 도구이다.
cygwin1.dll 이 호환 계층의 역할을 맡아서 POSIX API를 Windows API로 변환해주거나 파일시스템 경로를 윈도우 스타일로 변경해주고, 리눅스만의 fork, exec, IPC 등을 에뮬레이션 해준다.
cygwin 개발사가 여러 컴파일러(gcc, ld, g++)들을 이용해서 컴파일할때 POSIX API를 Windows API로 구현한 cygwin1.dll 을 같이 링킹해서 POSIX 함수 호출이 발생할 때 cygwin1.dll 에서 호출되도록 구현해뒀다.
정확히 말하면 ELF 바이너리를 Windows 에서 돌아가도록 에뮬레이션한 것이 아니라 gcc를 cygwin1.dll을 호출하게 빌드되도록 변경해서 PE 파일 포맷으로 새로 컴파일 하는것이다.
cygwin1.dll 에서는 가상의 마운트 테이블을 관리하고 있는데, 이 테이블을 참조해서 POSIX API 호출할 때 전달되는 경로를 Windows 의 파일시스템 경로로 변경해준다. (Cygwin Terminal 에서 mount 명령어로 확인 가능)
설치 #
한국 미러사이트 #
cygwin 바이너리가 저장된 미러 사이트를 선택해야 하며, https://cygwin.com/mirrors.html 에서 미러사이트 리스트를 확인할 수 있다.
- ftp.kr.freebsd.org (공식)
- http://ftp.daum.net/cygwin (다음)
- ftp://ftp.kaist.ac.kr/cygwin/ (카이스트)
- ftp://ftp.sayclub.com/pub/cygwin/ (세이클럽)
setup.exe #
드롭다운 메뉴 #
- Full : 모든 종류의 패키지 리스트 확인
- Pending : 이번에 선택해서 새로 설치하거나 업데이트될 패키지목록만 표시
- Up To Date : 이미 설치된 패키지 중 최신버전으로 유지되고 있는 패키지만 표시
- Partial : 의존성 문제 등으로 일부만 설치된 패키지 표시
- Removable : 삭제 가능한 패키지 표시. 종속성이 사라져서 삭제 가능한 패키지
- Unneeded : 의존성으로 필요하지 않은 패키지만 표시
- Category : 패키지를 카데고리별로 표시
리스트 필드명 #
- Current : 현재 설치된 패키지 버전.
- New : 새로 설치되거나 업데이트될 패키지 버전. Keep은 현재 버전을 유지한다는 의미이며, Skip은 설치되지 않도록 스킵한다는 의미이다. 특정 버전이 표시되는건 그 버전이 설치될 예정이라는 의미.
- Src? : 소스코드도 같이 다운로드한다.
주요 패키지 설치 #
apt-cyg 설치 #
apt-cyg를 미리 설치해두면 setup.exe 없이 패키지를 설치할 수 있다.
- setup.exe에서 wget 설치
- 아래 명령어 실행
1$ wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg 2$ install apt-cyg /bin