2009年3月10日 星期二

輕鬆學會 MSYS + MinGW ---- 在 Windows 底下重新編譯 GNU 程式

因為 DrawTiming 的關係, 我安裝了第一次使用的 Cygwin 來編譯執行檔, ....

後來, 編譯環境換成 MSYS + MinGW 之後, 就可以擺脫 cygwin1.dll, 而直接在 Windows 底下執行 DrawTiming 了。

MSYS + MinGW 真的是苗條許多, 下載 20MB, 安裝後 70MB, 相形之下, Cygwin 就顯得龐大 (下載 50~80MB, 安裝後 250~300MB),

.

configure --> build --> install 三部曲

MinGW 與 Cygwin 的不同處 (E-Office學園, 2006-02-05)

MinGW ... 將 gnu 這個 open source, free 的開發工具移植到微軟視窗平台,他直接產生出來的PC視窗平台機器碼,

UNIX 世界Open source 的玩法,大約都是 ... 取得 Source code,然後 configure --> build --> install 三部曲

configure 會先蒐集你平台上各個工具元件實際安裝路徑,根據它們來調整軟體 Project檔(通常它是一個Makefile),之後才執行 make 去 Build 出軟體,透過 Install 腳本,最後再把作好的軟體 install (安裝)到適當的資料夾來使用。這 MSYS 就可以讓 MinGW 這編譯工具也具備第一步的 configure 功能。

簡單的說 :

下載原始碼 例如 : DrawTiming
解開原始碼

tar -xzf drawtiming-0.x.tar.gz

執行 configure 自動調整編譯環境

cd drawtiming-0.x
./configure

依照需求 make make           (編譯執行檔)
make install  (編譯並自動安裝到)
make check  (編譯並測試執行結果)

而 MSYS + MinGW 就是讓我們能在 Windows 底下重新編譯 GNU 程式的 Minimum System

.

安裝 MinGW

GCC在windows的開發環境叫MinGW
MinGW代表Minimalist GNU for Windows
官方網站在 http://www.mingw.org/
sourceforge的專案網站 http://sourceforge.net/projects/mingw/

...

安裝過程中會詢問你還需要安裝哪些套件
通常會再選make跟g++

...

其餘詳見 installation of GCC on windows (koukai的Blog, 2007-05-17)

koukai 有提到要設環境變數, 不過我覺得 要搭配 MSYS 使用, 其實可以不必設定環境變數

可以先下載 MinGW-5.1.x.exe 再透過它來下載其餘的檔案, 我選了make跟g++之後, 總共下載了下面這些檔案:

mingwrt-3.15.1-mingw32.tar.gz
w32api-3.12-mingw32-dev.tar.gz
binutils-2.17.50-20060824-1.tar.gz
gcc-core-3.4.5-20060117-3.tar.gz
gcc-g++-3.4.5-20060117-3.tar.gz
mingw32-make-3.81-20080326-2.tar.gz
mingwrt-3.15.1-mingw32.tar.gz

安裝過程 在 koukai 的 installation of GCC on windows 有清楚的說明

.

安裝 MSYS

MSYS是一套類似cygwin在windows建構出unix-like的shell
並擁有一些常見的GNU utilities可以使用,也可以利用mingw的一些程式

 

... 首先安裝好mingw,可參閱http://koukaipan.pixnet.net/blog/post/4716500
... 再來安裝MSYS
... 問你要不要進行post install,鍵入y,
問你有沒有安裝mingw,當然有,鍵入y,
位置填入你mingw安裝位置,記住,這邊路徑目錄的斜線是正斜線
...
其餘詳見 MSYS環境建置 (koukai的Blog, 2008-10-10)

安裝完成之後, 點選桌面的 MSYS 圖示, 進入類似 Linux 的命令列, 操作 tar, configure, make ... 等指令, 就大功告成了。

不過, 這邊有個小問題, 是無法確定磁碟機如何對應, 像 cygwin 底下的 e: 會對應成 /cygdrive/e/, c: 會對應成 /cygdrive/c/ (參見 安裝Cygwin, Forster Wu, 2001-03-09), 但不清楚 MSYS 的作法 ...

所以, 我把下載的檔案用 7-Zip 或 IZArc 直接解壓縮到 x:\msys\1.0\home 底下, 也就是 MSYS 的 /home 底下

.

打造輕巧版的 DrawTiming

原本 DrawTiming 提供的是 120KB 的原始程式碼, 在 Linux 或 Cygwin 底下編譯成執行檔, 再配合 Magick++ API 來產生圖型檔 。

除了第一個純 Linux 的環境我沒試過之外, 越往下的編譯執行環境就是越輕巧的版本

  • 配合 Linux 底下安裝的 Magick++ API, ghostscript 字型,
    自行編譯 Linux 命令列的 DrawTiming 執行檔
  • 配合 Cygwin 底下安裝的 Magick++ API, ghostscript 字型,
    自行編譯 Cygwin 命令列的 DrawTiming 執行檔 (整套 cygwin 約 300MB)
  • Windows 命令列執行 DrawTiming
    ----
    『免安裝 Cygwin』, 但需要 Cygwin 的一堆 DLLs, ghostscript 字型 ... 等 (共10MB)
  • 改造程式碼 (詳見 Google Code),  使其獨立於 Magick++ API, ghostscript ... 
    ---- 使用 Cygwin 編譯, 執行時需要執行檔本身再加上 cygwin1.dll (共 2MB)
  • 真正的輕巧版, 改用 MSYS + MinGW 編譯, 連 cygwin1.dll 都不用了, 產生的執行檔拿到沒有裝 MSYS + MinGW 的別台 Windows 電腦還是一樣可以執行 (只要 1MB, 下載點)

.

0 意見:

發表您的回應

張貼留言