引用 | 編輯
nws
2005-01-25 21:56 |
樓主
▼ |
||
x0
Cygwin 怎麼說呢, 本人也用了 3 年了嗯, 這樣好了.. 沒有多一台主機灌 unix 但是又常用 unix 指令而且又懶得灌 VMWare 的使用者們, Cygwin 是最適合你(妳)的喔 好了, Cygwin 是什麼? 簡單說就是 Win32 上面的 Unix Console 以後有空再來更新本帖做個更詳細的介紹吧 先 po 個官方網頁 http://www.cygwin.com/ 會跑來這裡逛的大大們應該對網頁內的英文沒問題吧 編者註: 這不是一篇詳細的說明 時間已經晚了... 我該睡覺了 Cygwin 正丟著讓他 Install 跑阿跑的忽然間我想到, 不知道 MyChat 上面有沒有人提過 Cygwin 大略的搜尋一下發現竟然沒有人提及 Cygwin 的名字 太不可思議了... 所以現在就來這邊為 Cygwin 打一下小廣告 x0
|
引用 | 編輯
aguai
2006-08-04 21:03 |
1樓
▲ |
下面是引用nws於2005-01-25 21:56發表的 [01.25.05] Cygwin - Windows 上的 Unix 環境:這是別人翻譯的 當初是剪下來自己Study用 所以...實在不是我不註明出處... -- 根據cygwin user guide翻譯整理,希望對大家有所幫助。有錯誤清指出。 cygnus當初首先把gcc,gdb,gas等開發工具進行了改進,使他們能夠生成並解釋 win32的目標文件。然後,他們要把這些工具移植到windows平台上去。 一種方案是基於win32 api對這些工具的源代碼進行大幅修改,這樣做顯然需要大量工作。因此,他們採取了一種不同的方法——他們寫了一個共享庫(就是cygwin dll), 把win32 api中沒有的unix風格的調用(如fork,spawn,signals,select,sockets等)封裝在裡面,也就是說,他們基於win32 api寫了一個unix系統庫的模擬層。 這樣,只要把這些工具的源代碼和這個共享庫連接到一起,就可以使用unix主機上的交叉編譯器來生成可以在windows平台上運行的工具集。 以這些移植到windows平台上的開發工具為基礎,cygnus又逐步把其他的工具(幾乎不需要對源代碼進行修改,只需要修改他們的配置腳本)軟件移植到windows上來。 這樣,在windows平台上運行bash和開發工具、用戶工具,感覺好像在unix上工作。 關於cygwin實現的更詳細描述,請參考http://cygwin.com/cygwin-ug-net/highlights.html. 3 安裝設置cygwin 3.1 安裝 要安裝網絡版的cygwin,可以到http://cygwin.com,點擊"Install Cygwin Now!"。 這樣會先下載一個叫做setup.exe的GUI安裝程序,用它能下載一個完整的cygwin。按照每一屏的指示可以方便的進行安裝。 -- ///我個人建議是全抓下來之後選install from locoal disk ///主要是因為可能會面臨要重新搞很多次的麻煩 ///還好是不影響系統 不怎麼要緊 ///還有 想用裡面的gcc有很多眉眉角角 ///建議還是塵歸塵 土歸土 凱撒歸凱撒 上帝歸上帝 系統歸系統 編譯歸編譯 ....不好笑請習慣Orz -- 3.2 環境變量 開始運行bash之前,應該設置一些環境變量。cygwin提供了一個.bat文件,裡面已經設置好了最重要的環境變量。通過它來啟動bash是最安全的辦法。 -- ///現在的版本有一個cygwinX ///連Xwindow幫你一起作進來 ///但是我目前還不會用 ///個人目前是決定先不要在系統面貪玩 ///至少把程式語言學到有點作品再來整理平台的問題 ///目前光是同一平台同一程式語言不同編譯器中的語系問題 ///就夠我頭昏腦脹了 ///但為了有朝一日可以撰寫跨平台程式(遠目).... -- 這個.bat文件安裝在cygwin所在的根目錄下。 可以隨意編輯該文件。 CYGWIN變量用來針對cygwin運行時系統進行多種全局設置。 開始時,可以不設置CYGWIN或者在執行bash前用類似下面的格式在dos框下把它設為tty C:\> set CYGWIN=tty notitle glob -- ///TTY就是一般的控制台AKA"console"啦 ///有此一說是C++中"cout<<"的"c"就是指console ///又有說是character... -- PATH被cygwin應用程序作為搜索文件的路徑列表。 當一個cygwin進程啟動時,該變量被從windows格式 (e.g. C:\WinNT\ system32;C:\WinNT) 轉換成unix格式 (e.g., /WinNT/system32:/WinNT)。 如果想在不運行bash的時候也能夠使用cygwin工具集, PATH起碼應該包含x:\cygwin\bin,其中x:\cygwin 是你的系統中的cygwin目錄。 -- ///我不確定這招在WinXP的config.sys中有沒有意義 ///上次試有點亂 不太確定該歸咎我的哪個設定:P -- HOME 變量用來指定主目錄,推薦在執行bash前定義該變量。 當cygwin進程啟動時,該變量也被從windows格式轉換成unix格式, 例如,作者的機器上HOME的值為C:\ (dos命令set HOME就可以看到他的值,set HOME=XXX可以進行設置), 在bash中用echo $HOME 看,其值為/cygdrive/c. TERM變量指定終端型態。如果美對它進行設置,它將自動設為cygwin。 LD_LIBRARY_PATH被cygwin函數dlopen()作為搜索.dll文件的路徑列表, 該變量也被從windows格式轉換成unix格式。多數Cygwin應用程序不使用dlopen,因而不需要該變量。 3.3 改變cygwin的最大存儲容量 Cygwin 程序缺省可以分配的內存不超過384 MB(program+data)。 -- ///缺省是預設的意思 -- 多數情況下不需要修改這個限制。 然而,如果需要更多實際或虛擬內存, 應該修改註冊表的HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER區段。 添加一個DWORD鍵heap_chunk_in_mb並把它的值設為需要的內存限制,單位是十進制MB。 -- ///就是這裡...高手請指點 低手請注意 -- 也可以用cygwin中的regtool完成該設置。例子如下: regtool -i set /HKLM/Software/Cygnus\ Solutions/Cygwin/heap_chunk_in_mb 1024 regtool -v list /HKLM/Software/Cygnus\ Solutions/Cygwin 4 使用cygwin 這一段講一下cygwin和傳統unix系統的不同之處。 4.1 映射路徑名 4.1.1 引言 cygwin 同時支持win32和posix風格的路徑,路徑分隔符可以是正斜槓也可以是反斜槓。 還支持UNC路徑名。 (在網絡中,UNC是一種確定文件位置的方法,使用這種方法用戶可以不關心存儲設備的物理位置,方便了用戶使用。 在Windows操作系統,Novell Netware和其它操作系統中,都已經使用了這種規範以取代本地命名系統。 在UNC中,我們不用關心文件在什麼盤(或卷)上,不用關心這個盤(或卷)所在服務器在什麼地方。我們只要以下面格式就可以訪問文件: \\服務器名\共享名\路徑\文件名 共享名有時也被稱為文件所在卷或存儲設備的邏輯標識,但使用它的目的是讓用戶不必關心這些卷或存儲設備所在的物理位置。) 符合posix標準的操作系統(如linux)沒有盤符的概念。所有的絕對路徑都以一個斜槓開始,而不是盤符(如c:)。 所有的文件系統都是其中的子目錄。例如,兩個硬盤,其中之一為根,另一個可能是在/disk2路徑下。 因為許多unix系統上的程序假定存在單一的posix文件系統結構,所以cygwin專門維護了一個針對win32文件系統的內部posix視圖使這些程序可以在windows下正確運行。 在某些必要的情況下,cygwin會使用這種映射來進行win32和posix路徑之間的轉換。 4.1.2 cygwin mount表 cygwin 中的mount程序用來把win32盤符和網絡共享路徑映射到cygwin的內部posix目錄樹。這是與典型unix mount程序相似的概念。 對於那些對unix不熟悉而具有windows背景的的人來說,mount程序和早期的dos命令join非常相似,就是把一個盤符作為其他路徑的子目錄。 路徑映射信息存放在當前用戶的cygwin mount表中,這個mount table 又在windows的註冊表中。 這樣,當該用戶下一次登錄進來時,這些信息又從註冊表中取出。mount 表分為兩種,除了每個用戶特定的表,還有系統範圍的mount表, 每個cygwin用戶的安裝表都繼承自系統表。系統表只能由擁有合適權限的用戶(windows nt的管理員)修改。 當前用戶的mount表可以在註冊表"HKEY_CURRENT_USER/Software/Red Hat, Inc./Cygwin/mounts v" 下看到。系統表存在HKEY_LOCAL_MACHINE下。 posix 根路徑/缺省指向系統分區,但是可以使用mount命令重新指向到windows文件系統中的任何路徑。 cygwin從win32路徑生成posix路徑時,總是使用mount表中最長的前綴。例如如果c:被同時安裝在/c和/,cygwin將把C:/foo/bar轉換成/c/foo/bar. 如果不加任何參數地調用mount命令,會把Cygwin當前安裝點集合全部列出。 在下面的例子中,c盤是POSIX根,而d盤被映射到/d。本例中,根是一個系統範圍的安裝點,它對所有用戶都是可見的,而/d僅對當前用戶可見。 c:\> mount f:\cygwin\bin on /usr/bin type system (binmode) f:\cygwin\lib on /usr/lib type system (binmode) f:\cygwin on / type system (binmode) e:\src on /usr/src type system (binmode) c: on /cygdrive/c type user (binmode,noumount) e: on /cygdrive/e type user (binmode,noumount) 還可以使用mount命令增加新的安裝點,用umount刪除安裝點。 當Cygwin 不能根據已有的安裝點把某個win32路徑轉化為posix路徑時,cygwin會自動把它轉化到一個處於缺省posix路徑/cygdrive下的的一個安裝點. 例如,如果Cygwin 訪問Z:\foo,而Z盤當前不在安裝表內,那麼Z:\將被自動轉化成/cygdrive/Z. 可以給每個安裝點賦予特殊的屬性。自動安裝的分區顯示為「auto」安裝。安裝點還可以選擇是"textmode"還是 "binmode", 這個屬性決定了文本文件和二進制文件是否按同樣的方式處理。 4.1.3 其他路徑相關信息 cygpath工具提供了在shell腳本中進行win32-posix路徑格式轉換的能力。 HOME, PATH,和LD_LIBRARY_PATH環境變量會在cygwin進程啟動時自動被從Win32格式轉換成了POSIX格式 (例如,如果存在從該win32路徑到posix路徑的安裝,會把c:\cygwin\bin轉為/bin)。 -- 文章至此無疾而終 另有一link http://www.cyut.edu.tw/~s9154610/cygwin.html 在我上次crash前 有效.... x0 |