Posted on 2010-01-02 12:33
Prayer 閱讀(390)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
Shell 、
U基礎(chǔ)管理
cygwin是一個(gè)在windows平臺(tái)上運(yùn)行的
unix模擬環(huán)境,是cygnus solutions公司開(kāi)發(fā)的自由軟件(該公司開(kāi)發(fā)了很多好東西,著名的還有eCos,不過(guò)現(xiàn)已被
Redhat收購(gòu))。它對(duì)于學(xué)習(xí)unix/linux操作環(huán)境,或者從unix到windows的應(yīng)用程序移植,或者進(jìn)行某些特殊的開(kāi)發(fā)工作,尤其是使用gnu工具集在windows上進(jìn)行嵌入式系統(tǒng)開(kāi)發(fā),非常有用。隨著嵌入式系統(tǒng)開(kāi)發(fā)在國(guó)內(nèi)日漸流行,越來(lái)越多的開(kāi)發(fā)者對(duì)cygwin產(chǎn)生了興趣。
cygnus當(dāng)初首先把gcc,gdb,gas等開(kāi)發(fā)工具進(jìn)行了改進(jìn),使他們能夠生成并解釋win32的目標(biāo)文件。然后,他們要把這些工具移植到windows平臺(tái)上去。一種方案是基于win32 api對(duì)這些工具的源代碼進(jìn)行大幅修改,這樣做顯然需要大量工作。因此,他們采取了一種不同的方法——他們寫(xiě)了一個(gè)共享庫(kù)(就是cygwin dll),把win32 api中沒(méi)有的unix風(fēng)格的調(diào)用(如fork,spawn,signals,select,sockets等)封裝在里面,也就是說(shuō),他們基于win32 api寫(xiě)了一個(gè)unix系統(tǒng)庫(kù)的模擬層。這樣,只要把這些工具的源代碼和這個(gè)共享庫(kù)連接到一起,就可以使用unix主機(jī)上的交叉編譯器來(lái)生成可以在windows平臺(tái)上運(yùn)行的工具集。以這些移植到windows平臺(tái)上的開(kāi)發(fā)工具為基礎(chǔ),cygnus又逐步把其他的工具(幾乎不需要對(duì)源代碼進(jìn)行修改,只需要修改他們的配置腳本)軟件移植到windows上來(lái)。這樣,在windows平臺(tái)上運(yùn)行bash和開(kāi)發(fā)工具、用戶(hù)工具,感覺(jué)好像在unix上工作。
關(guān)于cygwin實(shí)現(xiàn)的更詳細(xì)描述,請(qǐng)參考http://cygwin.com/cygwin-ug-net/highlights.html.