2006年5月29日

Cygwin~找 code 惡搞 Windows 的好東西~

玩 Windows 的人恐怕沒聽過 Cygwin 這鬼東西,
不過玩 Linux 的人大概多少都會有耳聞~~
許多玩 Linux 的人都會想到,
Linux 上有許多好程式,不知道能不能拿到 Windows 上使用,
又或者,Linux 上開發的程式,能不能以最少量的修改就在 Windows 上使用~~

說到這裡,不免要奉勸看到文章的資工人,
M$ 的好~有目共睹,但 M$ 的專制~也是有目共睹的,
當哪天老闆說:「把系統轉到 Linux、SunOS 上,有客戶需要~~」,
你就知道哭這個字怎麼寫了~~~

回正題,Linux 的程式要轉到 Windows 上,
是很多人都想知道的,因此有了許多的方案出現,
以最正式、最正統的方案來說,就是 Java 了~~

不過顯然很多人聽到 Java 就沒力,又慢、又爛、還要重學.... :(

而 C/C++,則出現了兩個方案,一個就是 Cygwin,另一個則是 MinGW,
Cygwin 的目標是,將 Linux 的環境移植到 Windows 上,
環境移植了,程式自然好辦,所以成果不錯,缺點是速度較慢~~

MinGW 則有遠大的抱負,要將 Linux 上的 API 在 Windows 上重現,
目前進度不錯,不少程式都能順利轉移,但發展沒有 Cygwin 快速,
優點是,速度原則上跟 win32 的應用程式一樣~~

DevC++ 就是用 MinGW 的 GNU C 來編譯軟體,
出來的程式也都算是 MinGW 的程式~~~

如果在開發階段就考慮到跨平台的問題,
以 C/C++ 來說,wxWidgets 大概是不錯的選擇,
wxWidgets 以 Linux 上的 GUI 函式 GTK 為基礎,
在 Windows 和 Linux 上同時開發相同的 API,
因此 wxWidgets 的 API 在 Windows 和 Linux 都相同,
可以說除了 Compile 的動作之外,和 Java 頗相似~~

而 .NET Framework 在近年頗紅,但不幸的,它的跨平台只跨 Windows,
有一群瘋子,便在 Linux 上開發的 .NET 的 Porject,
名稱叫做「MONO」,其目標是,
能夠完全相容 .NET Framework,且能在 Linux 上執行,
目前成果也不錯,實做出了大部分的 .NET API,
一般的 .NET 應用程式都可以透過它直接執行,
而 MONO 也提供了自己較獨特的 API 以及 Compiler,
同時,MONO 也開發了 Windows/Linux 的版本供使用,
可以說是目前前景最看好了 Project,
原理上和 Java 相同,但速度卻比 Java 快得多,至少 GUI 部份很讓人滿意。

而這次,我又幹了什麼.........
我們實驗室大都利用一個稱之為 cscope 的軟體來 trace code,
這個程式搭配編輯軟體,可以透過搜尋,
直接找到 function 在哪個檔案的哪一行,
可以說是非常的方便,但是很可惜,它是 Linux 的程式,
我為了它,必須要連到學校的 Linux 機器,
有時候機器被鎖卡,有時候學校斷線,此時就只能自己哭了~~

因此我就稍微用「cscope」「win32」找 google 大神幫幫忙,
很順利的出現了,可惜的是,在 Windows 上沒有能夠搭配的編輯軟體,
這時搭配 Cygwin,裝個 joe,Linux 環境重現~~~
也順利的繼續我的 Trace 之路~~~

另外,這算是最後的備註吧~~
Linux 上的壓縮檔,在 Windows 上用 WinRAR 解壓縮時,
經常都會發生檔案錯誤的問題,往往跟你說是否覆蓋檔案,
蓋了~~就死了~~~
經過長時間的研究後發現,原因是出在 link 上,
用 Windows 的說法就是「捷徑」,
Linux 上的捷徑基本上到了濫用的地步了,
到處都是捷徑,WinRAR 似乎不大認得 Linux 的捷徑,
或者說 Windows 和 Linux 的捷徑格式不同,
不論如何,結果就是「檔案錯誤」..........

而 Cygwin 裡面的 tar 則很方便,它能夠在解壓縮時,
幫你轉成 Windows 的捷徑,錯誤統統消失,檔案一切正常~~
使用方法和在 Linux 上相同~~~

沒有留言: