[在windows上使用Unix工具]cygwin



一 cygwin
Cygwin 是一個用於 Microsoft® Windows® 操作系統的類 UNIX® 環境。它包含一個真正的 UNIX shell、一個 Portable Operating System Interface (POSIX) 模擬庫以及數千個 UNIX 實用程序。

作用:
1)作為Linux/Unix的初學者,可以使用cygwin來在windows上模擬使用Linux/Unix;
2)可以基於cygwin來從windows訪問Linux/Unix;
3)可以在Windows上模擬Linux的開發環境,比如使用GUN的編譯和調試工具來做程序開發;
4)可以基於cygwin中間層實現Linux/Unix應用程序到windows的無代碼修改的移植;(cygwin dll實現了對windows底層API的Linux/Unix風格的封裝)
5)注意,cygwin中運行的Linux/Unix工具其實是這些工具的對應的windows的exe版本,cygwin不能直接運行Linux/Unix的應用程序;

主頁:http://cygwin.com/

二 cygwin的安裝
Cygwin 是一個用於 Windows 的類 UNIX shell 環境。 它由兩個組件組成:一個 UNIX API 庫,它模擬 UNIX 操作系統提供的許多特性;以及 Bash shell 的改寫版本和許多 UNIX 實用程序,它們提供大家熟悉的 UNIX 命令行界面。前一個組件是一個 Windows 動態鏈接庫 (DLL)。后一個組件是一組基於 Cygwin DLL 的程序,其中許多是用未經修改的 UNIX 源代碼編譯的。它們合在一起提供大家熟悉的 UNIX 環境。

Cygwin使用安裝向導程序setup.exe來實現cygwin的在線安裝。 同時setup.exe文件可以重新安裝軟件,可以添加、修改或升級 Cygwin 配置的組件。

在 Windows 系統上打開瀏覽器,通過訪問 http://cygwin.com/setup.exe 下載 Cygwin 安裝程序。安裝程序本身非常小(大約 600KB),因為大多數 Cygwin 軟件是在安裝過程中下載的。完成下載之后,按照以下步驟安裝 Cygwin:

  1 運行安裝程序。
  
  2 單擊 Next 進入下一個屏幕,選擇要執行的安裝類型。單擊 Install from Internet
  3 單擊 Next,然后選擇一個安裝目錄。
     
  在大多數情況下,推薦的安裝選項是合適的,也可以進行定制,但是要注意幾點:
   1)不要在 Windows 系統的根目錄(比如 C:)中安裝 Cygwin。最好把 Cygwin 安裝在它自己的子目錄中,比如默認目錄(C:\cygwin)或 C:\Program Files\cygwin。(您選擇的目標目錄將成為模擬的 UNIX 環境的根目錄 /。例如,如果在 C:\cygwin 中安裝,那么虛擬的 /usr/bin 實際上是 C:\cygwin\usr\bin) 。
   2)對於 Install For 選項,不要選擇 Just Me。
   3)把 Default Text File 類型設置為 Unix,從而盡可能提高與其他 UNIX 機器上存儲的現有文件的兼容性
  4 單擊 Next。在下一個窗口中,選擇一個存儲 Cygwin 所需的數據的目錄。 不要選擇前一步中選擇的 Cygwin 目錄。 如果可能的話,應該在有至少 1GB 空閑空間的驅動器上創建或選擇一個目錄。
  5 再次單擊 Next,選擇使用的 Internet 連接類型。通常應該選擇 Direct Connection。
      6 再次單擊 Next。稍等一會兒,Cygwin 會下載當前的鏡像站點列表,讓您選擇一個鏡像站點,
  
  如果不確定應該選擇哪個站點,就選擇地理位置比較近的站點。
  7 再次next, 經過短暫的延遲之后,安裝程序顯示可用的類別和包的完整列表。
  
  顯示一個類別的部分內容。單擊加號 ( +) 展開對應的類別;單擊 “循環” 標志在 Skip(忽略此包)和包的所有可用版本之間循環。如果 Cygwin 提供一個實用程序的多個版本,應該選擇滿足您的需求的實例。順便說一下,如果選擇 B 列,就會下載二進制包;選擇 S,也會下載源代碼。

在 Cygwin 中可用的包超過 1,000 個,所以應該只選擇您需要的類別和包。(安裝所有 Cygwin 包會占用超過 800MB 的磁盤空間)。以后隨時可以添加整個類別或單獨的包:只需重新運行 Cygwin 安裝程序。(還可以在任何時候用相同的安裝程序刪除或更新包)。

  8 選擇您需要的工具之后,單擊 Next,下載過程開始!
  

進度條分別反映每個包的下載進度、總下載進度和磁盤使用量。

  9 最后,安裝程序安裝軟件並(可選地)在 Start 菜單和桌面中添加快捷方式。單擊 Finish

  10 通過使用 Start 菜單或雙擊 Cygwin 圖標(如果添加了這些快捷方式的話),啟動 Cygwin;也可以執行 Cygwin 目錄中的 Cygwin 腳本(比如 C:\cygwin\Cygwin.bat)。

  

  顯示第一次啟動 Cygwin 時的情況:它創建您的主目錄,執行 shell 啟動文件,顯示提示。現在可以運行 UNIX 命令了!

三 cygwin使用
你可以使用幾乎所有的linux/unix命令來操作你本地的windows系統。哈哈!
例如使用 df -h來查看你的磁盤的使用情況:

Cygwin 安裝目錄作為虛擬 UNIX 系統的根目錄。Cygwin 把安裝目錄中的子目錄映射到 UNIX 目錄。它以單獨的卷的形式提供 Windows 驅動器,比如 /cygwin/c。可以使用這樣的虛擬路徑啟動 Windows 程序。請嘗試輸入 /cygdrive/c/Program\ Files/Internet\ Explorer/IEXPLORE.EXE 從命令行啟動 Windows Internet Explorer®。(還可以使用 Tab 鍵自動展開路徑的元素) 。

順便說一句,如果要把 Windows 路徑名轉換為等效的 UNIX 路徑名或者相反,可以試試內置命令 cygpath。在默認情況下,cygpath 產生 UNIX 路徑名。使用 -w 選項產生 Windows 路徑。

$ cygpath -w /cygwin/c/Program\ Files/Internet\ Explorer/IEXPLORE.EXE
c:\Program Files\Internet Explorer\IEXPLORE.EXE

還有幫助溝通這兩個環境的其他特性:

  • Cygwin 提供它自己的 lpr(/usr/bin/lpr 而不是 Windows 的 LPR.EXE),可以直接從模擬的 UNIX 環境進行打印。只需把 PRINTER 環境變量設置為 \\server\printer_name 或 //server/printer_name 這樣的 Cygwin UNC;前向斜杠和反向斜杠都可以,在 Cygwin 中的其他地方也是如此。
  • 在 Cygwin 中用 ln -s 創建的符號鏈接在 Windows 中被解釋為快捷方式。同樣,Windows 快捷方式在 Cygwin 中被解釋為符號鏈接。因此,可以使用 Windows 快捷方式帶參數啟動 UNIX 命令。
  • 因為 Cygwin 提供完整的 Bash shell,所以可以使用上述的所有兼容特性(和其他特性)編寫 UNIX shell 腳本來維護 Windows!

    例如,可以使用 UNIX find 在驅動器上搜索數據。請注意一點:在 Windows 文件名中常常使用空格。為了保持完整的文件名(請記住,UNIX 參數以空格分隔),一定要使用 find -print0xargs -0

更新和擴展 Cygwin

正如前面提到的,在任何時候都可以通過運行 Cygwin 安裝程序添加、刪除和更新 Cygwin 類別和包。我們來添加幾個軟件開發包,以便像在傳統的 UNIX 系統上那樣從源代碼構建程序。

再次運行 Cygwin setup.exe 應用程序,依次通過前幾個對話框,直到到達 Select Packages 窗口。展開 Devel 類別,使用循環控件選擇以下包的最高版本:

  • autoconf2.1
  • automake1.10
  • binutils
  • gcc-core
  • gcc4-core
  • gdb
  • pcre
  • pcre-devel

做出選擇之后(為了滿足依賴性,可能會自動選擇其他包),單擊 Next 開始更新。與前面一樣,下載和安裝過程需要一定的時間(開發包往往相當大)。

在此期間,打開一個瀏覽器並通過訪問 http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz 下載 GNU wget 實用程序的最新源代碼。(wget 是一種命令行工具,它可以下載任何東西。使用 Cygwin 把此文件復制到 Cygwin 中的主目錄,展開壓縮文件。

$ cp /cygdrive/c/Documents\ and\ Settings/Martin/My\ Documents/wget-1.11.4.tar ~
$ tar xzvf wget-11.4.tar
wget-1.11.4/
wget-1.11.4/AUTHORS
wget-1.11.4/NEWS
wget-1.11.4/COPYING
wget-1.11.4/configure.bat
wget-1.11.4/ChangeLog
wget-1.11.4/ChangeLog.README
wget-1.11.4/msdos/
wget-1.11.4/msdos/ChangeLog
wget-1.11.4/msdos/Makefile.DJ
...
wget-1.11.4/src/cookies.c
wget-1.11.4/src/http.h
wget-1.11.4/src/log.h
wget-1.11.4/src/sysdep.h
wget-1.11.4/src/alloca.c
wget-1.11.4/src/getopt.c
wget-1.11.4/src/gnu-md5.h
wget-1.11.4/src/ftp.c
wget-1.11.4/config.sub
wget-1.11.4/config.guess
$

當 Cygwin 下載和安裝過程完成時,單擊 Finish。現在可以從源代碼構建 wget 實用程序了。

$ cd wget-1.11.4
$ ./configure
configure: Configuring for GNU wget 1.11.4
...
creating po/Makefile
$ make
gcc -I. ...
$ make install
...
/usr/bin/install -c -m 644 ./wget.1 /usr/local/share/man/man1/wget.1
$ type wget
/usr/local/bin/wget

為了測試這個新的實用程序,在 Cygwin 中運行它並下載 wget 源代碼:

$ /usr/local/bin/wget http://ftp.gnu.org/gnu/wget/wget-1.11.4.tar.gz

稍后就會得到一個新的源代碼壓縮文件。使用 Cygwin 安裝程序從 Cygwin 存儲庫獲得實用程序是最簡單的方法,但是也可以在 Cygwin 中構建下載的或自己的源代碼。在 Cygwin 中可以使用全套 UNIX 開發工具,包括最流行的腳本編程語言。


五 cygwin中實現linux程序到windows的移植和跨平台軟件的開發

如果您不喜歡 Microsoft Visual Studio® 等 Windows 開發工具,可以用 Cygwin 中的 UNIX 編譯器和工具構建原生 Windows WIN32 應用程序。但是一般的大部分的使用情況我們是借助cygwin來實現Linux/Unix程序到windows的移植,或用來編寫誇平台的應用。
例如,我們可以在cygwin中使用vim來編寫一個簡單的hello.c的c文件:
int main(void)
{
  printf( "Hello World!");
}
然后我們輸入編譯指令:
# gcc hello.c -o hello
然后執行:
# ./hello
此時的hello運行正常且是一個windows的exe程序。你可以拷貝hello.exe和cygwin.dll到一個單獨的目錄,在windows去執行。

但是當我們將以上的源文件hello.c拷貝的正真的Linux/Unix系統,然后重復上面的編譯的執行指令,程序任然正常的運行,但是此時的程序已經是Linux/Unix的可執行格式。

六 參考:http://www.ibm.com/developerworks/cn/aix/library/au-spunix_cygwin/index.html#resources

完!

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com