Sunday, January 08, 2006

我的 Linux on Windows 體驗

Linux-like 環境下許多好用的工具被熱心的使用者移植到 Windows 上。剛開始人們先移植的是上面的程式開發環境,慢慢的其他實用的軟體也陸陸續續被移植過來。我在 Linux 下接觸了 GNU toolset 後,也在 DOS 下找來了 DJGPP ,企圖讓程式可達到 source code portable 的目的。然後又用了好一陣子的 Cygwin ,也都是用來開發 DOS-based 的程式。在試用了 MinGW with MSYS 後,覺得比 Cygwin 順手多了,就一直沿用至今。 去年才聽說的 coLinux ,更進一步讓我們可以直接在 Windows 上安裝的 Linux ,省掉了許多從前需要移植程式的場合。

十多年前剛接觸 C++ 時,是在 DOS 下開發程式的,當時費了一個暑假的時間完成的〈天線場型電腦繪圖〉程式,就是利用 Borland C++ v3.1 這套工具來開發的。所以接觸 DJGPP 後,我也找了一套叫 RHIDE 的, 除了跟 Borland C++ v3.1 的 IDE 簡直是同一個模子刻出來的外,還是 open source 的。在參考了其他 library 後,我發現可以很容易把〈天線場型電腦繪圖〉程式移植過來,移植後也可以在 re-compiling 後就讓它在 Linux 下跑。

隨著 Windows 及 GUI 的興起, DOS 及其下的 console-based 開發介面慢慢地不能滿足我的胃口,所以就改採 Dev-C++ ,用了一陣子後在 CSZone 聽到有人介紹 MinGW Developer StudioScintilla 的 code folding 功能整合進去後,也第一時間試用。後來在 Parinya Software 網站的 Resources 上發現它介紹的 Code::Blocks Studio ,一用之下,驚為天人,雖然還有很多改進的空間,但整個設計非常合我胃口。如果你有使用 make 這類 project manager 的習慣,你一定會欣賞 CodeBlocks ,不但支援 multi-project 還支援 multi-target ,且可以跟 makefile 及 shell script 整合得很好。更讓人高興的是它還是 cross platform 的。

如果你想開發或移植程式到 DOS 來,那可以試試 DJGPP 。如果你只是單純的想利用 GNU toolset 開發跨平台的程式,那 MinGW/MSYS 是不二的選擇,再搭配 Code::Blocks Studio 這套跨平台的 IDE 後,更是如虎添翼。如果你想玩玩 XWindow 或 Linux 下其他 open source 的東西,但又不想裝 Linux ,那需要的會是 CygwincoLinux 則更省事,直接把 Linux 裝在 Windows 上,省了移植的功夫,概念上類似在 Windows 裝上 VMWare ,然後再於上面灌 Linux 。很多 coLinux 的使用者也是 Cygwin 的重度使用者,兩者可以透過 XWindow System 通訊。 Cygwin 下的中文問題可以參考這篇。要在 coLinux 下跑 XWindow ,那一定要看看這篇

中文維基百科也有提到一段 Cygwin 的歷史:

Cygwin始於 1995 年,最初作為 Cygnus 工程師 Steve Chamberlain 的一個項目。當時 Windows NT 和 Windows 95 將 COFF 作為目標代碼,而 GNU 已經支持 x86 和 COFF ,以及 C 語言庫 newlib。這樣至少在理論上,可以將 GCC 重定向,作為 cross compiler,從而產生能在Windows上運行的可執行程序。在後來的實踐中,這很快實現了。

這裡也有相關的討論:

Cygwin 的發展方向是盡最大可能在 Windows 上模擬 UNIX 的 POSIX ,因此採用這套系統編譯出的軟件基本上需要 cygwin 的 POSIX 模擬模塊。唯一的例外,給編譯器賦予-mno-cygwin指令同時安裝有 mingw 運行時庫則可以直接生成原生win32編譯結果直接使用。這麼做如同在 Mingw 下編譯同一個程序一樣,但是要注意如果 mingw 本身都無法編譯這個程序在cygwin 下加 -mno-cygwin 也是沒有意義。

Tags: [] [] [] [] [] []

0 comments: