如何在 Windows 中寫程式如同於 Linux 一般?
最近因為工作的需要,很多程式都得在 Windows 底下編譯、執行。這對於大二之後就再也沒有寫過任何 Windows 程式的我真的是綁手綁腳,怎麼用都不習慣。雖然我認為 Visual Studio 真的很強大很好用,但是很多時候我們並不需要這麼龐大的 IDE,殺雞焉用牛刀呢?這時候就會開始懷念起 Linux 底下的 Vim 與 GCC 了…
之前就知道 cygwin 可以在 Windows 底下創造出一個符合 POSIX 的系統(另外一套是 MinGW),但是一直沒有去使用,畢竟自己手邊的電腦不是 Mac 就是 Ubuntu。也因為沒有真正去使用的經驗,所以我一開始是以為他的功能並不是很完整,頂多就是堪用罷了。直到我把我在 Linux 的程式丟到 cygwin 執行後,才驚覺它的強大!因為我幾乎不用任何程式碼,就可以直接產生執行檔,除了可以在 cygwin 內執行之外,也可以順利的在其他 Windows 電腦上執行!
不過 cygwin 並不是沒有缺點的,最大的缺點就是它並沒有真正的套件管理系統。一旦缺什麼套件,你就得拿出當初下載下來的安裝檔重新安裝…雖然有點麻煩、裡面的套件也不若 Ubuntu’s APT 或是 Gentoo’s Portage 這麼多,但該有的幾乎都不少了。
接下來就開始來看看如何建構一個舒服的編程環境吧!
還我終端機!
在 Windows 上最不習慣的就是終端機了!嚴格來說應該是命令提示字元,除了只能使用 DOS 命令之外,複製貼上也不是普通的麻煩。也沒有上色功能,字體又醜,缺點真的是列不完…Orz
可見不是只有我有這個需求,所以 putty 的延伸 puttycyg 就誕生啦!簡單的來說就是在 SSH 以外增加了連線到本機 cygwin 環境的功能。這樣就可以直接使用到 putty 本身強大的終端機介面啦!加上 /cygdrive/ 的幫助之下,可以完成許多本來得在命令提示字元中才可以處理的事情。
準備好編譯環境
寫程式少不了編譯器、除錯器。安裝方式一樣,但是請注意安裝 cygwin 的 GCC 跟安裝在 Windows 的 GCC 是完全不同的東西,所以要先弄清楚自己是要在 POSIX 環境下進行編譯還是在命令提示字元底下。
gVim:要寫程式,少不了好用的編輯器!
當然,我們也可以透過上述安裝套件的方法,在 cygwin 中安裝 vim。但是我個人認為在 Windows 不同資料夾中做切換還是有點不方便(即使用了 putty 的終端機),這時候最需要的就是 vim 強大的 File navigation 套件:command-t。如此一來,搭配著 gVim,我們就可以直接在檔案總館中對檔案按下右鍵編輯,並且透過 command-t 在各個檔案間跳躍!
把舊有的 .vimrc .gvimrc 移植過來並不太費力,只要將不相容的刪除即可。但是安裝 command-t 可就有點麻煩了…
- 下載 gVim 7.2 與 ruby 1.87 (因為 vim 預先載入的是與 ruby 1.87 連結,所以我們必須下載對應的版本。如果下載 gVim 7.3,則是對應 ruby 1.91,但不建議,因為新版在與 ruby 配合這方便不是非常的穩定)
- 確保 ruby 功能有開啟:gVim 7.2 以上的版本是預設開啟的,但是最後還是透過 :ruby 1 或是 vim –version 檢查一下。如果可以執行命令或是出現 +ruby 字眼,就沒有問題了。不然就只能下載原始碼自己重新編譯一份,可以參考這個網站的教學(已經跟現在版本有點出入,參考作法即可)。
- 剩下的就是編譯 command-t 的標準流程了: :e command-t.vba :so % $ cd ~/.vim/ruby/command-t $ ruby extconf.rb $ make
- 不過我在過程中還是會出現這樣的錯誤,最後我發現,這是因為所解壓縮而得到的 extconf.rb 中路徑設定有問題,把 C/Program Files/…/…/ 改回符合 Windows 格式的 C:\Program Files\…\… 即可,我想可能算是個小 bug。