[cygwin] 설치 및 세팅

[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 파일 포맷으로 새로 컴파일 하는것이다.

4daeb911-c63a-4588-a53d-53e20985b190

cygwin1.dll 에서는 가상의 마운트 테이블을 관리하고 있는데, 이 테이블을 참조해서 POSIX API 호출할 때 전달되는 경로를 Windows 의 파일시스템 경로로 변경해준다. (Cygwin Terminal 에서 mount 명령어로 확인 가능)

ac380a09-3841-4a6d-a0f4-f4fc1406421e


설치 #

한국 미러사이트 #

cygwin 바이너리가 저장된 미러 사이트를 선택해야 하며, https://cygwin.com/mirrors.html 에서 미러사이트 리스트를 확인할 수 있다.


setup.exe #

cff96a73-3937-40d9-a19b-49a4fcb93c2c

드롭다운 메뉴 #

  • Full : 모든 종류의 패키지 리스트 확인
  • Pending : 이번에 선택해서 새로 설치하거나 업데이트될 패키지목록만 표시
  • Up To Date : 이미 설치된 패키지 중 최신버전으로 유지되고 있는 패키지만 표시
  • Partial : 의존성 문제 등으로 일부만 설치된 패키지 표시
  • Removable : 삭제 가능한 패키지 표시. 종속성이 사라져서 삭제 가능한 패키지
  • Unneeded : 의존성으로 필요하지 않은 패키지만 표시
  • Category : 패키지를 카데고리별로 표시

리스트 필드명 #

  • Current : 현재 설치된 패키지 버전.
  • New : 새로 설치되거나 업데이트될 패키지 버전. Keep은 현재 버전을 유지한다는 의미이며, Skip은 설치되지 않도록 스킵한다는 의미이다. 특정 버전이 표시되는건 그 버전이 설치될 예정이라는 의미.
  • Src? : 소스코드도 같이 다운로드한다.

주요 패키지 설치 #

apt-cyg 설치 #

apt-cyg를 미리 설치해두면 setup.exe 없이 패키지를 설치할 수 있다.

  1. setup.exe에서 wget 설치
  2. 아래 명령어 실행
    1$ wget rawgit.com/transcode-open/apt-cyg/master/apt-cyg
    2$ install apt-cyg /bin
    
comments powered by Disqus