Cygwin 是運行在 Windows 上的 Unix-like 模擬層,由 Cygnus Solutions 開發(現屬 Red Hat)。它提供 GNU 工具鏈(GCC、GDB、make 等)與 Bash 環境,讓開發者無需雙系統或虛擬機即可在 Windows 上進行 Linux 學習、跨平台移植、嵌入式交叉編譯。
Cygnus 並未重寫所有工具源碼,而是編寫一個共享庫 cygwin1.dll,在 Win32 API 之上實現 Unix 系統調用(fork、signals、sockets、PTY 等)。工具源碼僅需鏈接此 DLL 即可在 Windows 上運行,極大減少移植工作量。
詳細技術白皮書:Cygwin Internals
setup-x86_64.exe(或 32 位版)。C:\cygwin64(預留 ≥5 GB)。mirrors.163.com)。PATH:必須包含 C:\cygwin64\bin,否則 Windows CMD 無法直接調用 Cygwin 工具。HOME:指定用戶主目錄,映射為 /home/用戶名。CYGWIN:可設 tty notitle glob 改善終端體驗。TERM:預設 cygwin,亦可改 xterm-256color。推薦使用安裝目錄下的 Cygwin.bat 啟動 Bash,已自動注入上述變量。
修改註冊表 HKEY_LOCAL_MACHINE\Software\Cygnus Solutions\Cygwin\heap_chunk_in_mb(DWORD,單位 MB),或執行:
regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024
mount 查看當前映射;mount -u 移除;mount D: /mnt/d 新增。/cygdrive/X。cygpath 工具在腳本中互轉路徑格式。$ mount # 列出掛載點
$ cd /cygdrive/c # 進入 C 槽
$ ls # 列出文件
$ cd "Program Files" # 含空格目錄需轉義或加引號
/opt 解壓工具鏈:tar zxvf arm-linux-toolchains_cygwin.tgz/etc/profile,將 /opt/FriendlyARM/crosstool/arm-linux/gcc-2.95.3-glibc-2.2.3/bin 加入 PATH。arm-linux-gcc -v/friendly-arm,修改 Makefile 指定 CROSS_COMPILE=arm-linux- 及頭文件路徑,執行 make menuconfig → make。scripts/lxdialog/lxdialog 及 .o 文件(Linux 残留二進制),必要時先 make dep。| 維度 | Cygwin | VMware / VirtualBox |
|---|---|---|
| 資源佔用 | 輕量,無虛擬化開銷 | 需分配 CPU/記憶體/磁盤 |
| 兼容性 | 僅模擬 POSIX 子集,部分系統調用缺失 | 完整 Linux 內核,100% 兼容 |
| 適用場景 | 學習命令行、交叉編譯、腳本移植 | 內核開發、驅動測試、生產環境模擬 |
Cygwin 是 Windows 開發者接觸 Unix 生態的低門檻橋樑,尤其適合嵌入式交叉編譯與腳本遷移。若需完整內核特性,仍建議使用虛擬機或 WSL 2。