你應該也有這種經驗, 想找某方面的軟體, 尋尋覓覓尋尋覓覓的結果, 卻發現怎麼就只有 Linux 版本 ..., 這時候你怎麼辦? 會想動手把它『移植』到 Windows 嗎?
例如: 有機會和 Evernote 或 OneNote 互補的 BasKet Note Pads, 讓我差點想把 andLinux 或 coLinux 架起來....。而最近找到『畫時序圖』的免費工具 DrawTiming, 就讓我安裝了第一次使用的 Cygwin 來編譯執行檔, 最後又換成 MSYS + MinGW ...
.
Cygwin 與 MinGW 的不同
Cygwin 與 MinGW 有什麼不同? 我的看法是: 比較複雜, 或是使用到較多外部函式庫的程式, 適合使用 Cygwin; 而比較單純, 沒有使用到外部函式庫, 而且又希望很容易分享出去的程式, 則適合使用 MinGW
其他說明可以參考 :
- MinGW 與 Cygwin 的不同處 (E-Office學園, 2006-02-05)
Cygwin ... 透過 ... Cygwin1.dll ... 建立一個系統呼叫轉換層,將原先 unix 世界裡的 system call 呼叫,... 映對到微軟視窗作業系統的系統呼叫,... 在 Windows 底下模擬出一個 unix 平台來
MinGW ... 將 gnu 這個 open source, free 的開發工具移植到微軟視窗平台,他直接產生出來的PC視窗平台機器碼,
- How to use MinGW GNU GCC and with PSPad (石頭閒語, 2006-09-08)
MinGW 是取 Minimalist GNU for Windows 計劃之意,其目標為提供一個可在 Win32 平台上開發 Win32 native code 的 GNU GCC tools ,而非提供 Unix 程式移植到 Win32 平台之用,此即為其 Minimalist 之意。... 在 MinGW 中,有提供一套最小化的 unix shell 擬似執行環境,稱為 MSYS (Minimal SYStem)
... 如果是打算將原本在unix 環境下的程式移植到win32 的使用者,也不建議用這套工具, Cygwin 更合適。
- cygwin note (http://irw.ncut.edu.tw/peterju/cygwin.html)
簡單的說,cygwin在windows上提供了一個像linux (Linux-like)的環境,可以讓使用者在windows上執行linux的程式。
嚴格地說, cygwin 是模擬了 GNU 的環境, 而不是 linux 的環境,藉著 cygwin 的函式庫(library), 在 Win32 API 環境上提供了像 linux 般的API 環境. 利用 Cygwin, 你可以:
- 將 linux 上的程式移植到 Windows , 而不必做重大的修改,只需將原始碼拿來作 configure 與 make 就好了。
- 使用常用的 linux 工具程式,如grep, sed, awk等。
- 撰寫 Win32 native console 或是 GUI 應用程式。
.
下載與安裝 Cygwin
- 連至 www.cygwin.com 下載 setup.exe
- 執行 setup.exe , 選取Download from Internet
- 選取距離自己最近的下載點
- 選取所需套件 // 建議全選devel, lib等分類的所有套件
- 執行 setup.exe , 選取Install from Local directory安裝套件 //最好選取 All user
- 選取所有套件
- 執行桌面上的 Cygwin 的 icon 圖示即可執行此一 Cygwin 環境。// 視窗大小可由icon 圖示右點按 選取調整字型 及佈置
step by step 可參考 http://linux.tnc.edu.tw/techdoc/shell/x52.html
.
例如, DrawTiming 官網的 安裝說明 提到已經在 FreeBSD, Linux, 和 Cygwin 底下測試過, 另外在 編譯成 Cygwin 版本的注意事項 又說到需要這些函式庫: ImageMagick, libMagick-devel, libbz2-devel, gcc-g++, make, xorg-x11-devel, ghostscript-base, 所以我裝 Cygwin 的步驟就是 :
- 先下載 572K 的 Cygwin setup.exe,
- 執行 setup.exe, 選『下載但不安裝』 (Download Without Installing)
- 指定下載檔案到本機的存放位置
- ... 選下載點, 例如 ftp://ftp.???.???.edu.tw (台灣的幾個大學)
- ... 選 下載的函式庫
這是一個樹狀選單, 如果不清楚到哪一個類別節點去找函式庫, 可以在 本機存放位置的 ftp://ftp.???.???.edu.tw 子目錄底下找到 setup.ini 的內容, 例如下面的例子 : - 下載完成之後, 再執行一次, 這次選『從本機的存放位置安裝』(Install from Local Directory) ...
setup.ini 的內容
@ libMagick-devel
sdesc: "Image manipulation software suite (development)"
ldesc: "ImageMagick is a software suite to create, edit, and compose bitmap ..."
category: Graphics
requires: cygwin libbz2-devel libfontconfig-devel libfpx-devel libfreetype2-devel libjasper-devel libjbig-devel libjpeg-devel liblcms-devel libpng12-devel libtiff-devel libwmf-devel libxml2-devel libX11-devel libXext-devel zlib...
@ xorg-x11-devel
sdesc: "Obsolete package"
ldesc: "Obsolete package"
category: _obsolete
requires: libX11-devel xorg-x11-base
可以得知 libMagick-devel 在 Graphics 這個類別節點底下, 而且它同時需要 cygwin libbz2-devel, 這些相依的函式庫 (dependency), 會在點選 libMagick-devel 時被自動納入, 而 xorg-x11-devel 則是不存在 (_obsolete)
下面是我在 Cygwin 內定的部份之外, 配合 DrawTiming 再勾選的函式庫 :
類別節點 | 函式庫 |
Devel | gcc-core gcc-g++ make |
Graphics | ImageMagick ghostscript ghostscript-fonts-others ghostscript-fonts-std libMagick-devel |
Libs | libbz2-devel |
_obsolete (不存在) | ghostscript-base xorg-x11-devel |
.
製作 Cygwin 版的 DrawTiming
假設 drawtiming-0.7.tar.gz 存放在 e:
- 點選桌面的 Cygwin 圖示
- cd cygdrive/e/
( cygwin 底下的 e: 會對應成 /cygdrive/e/, c: 會對應成 /cygdrive/c/ ) - tar -xzf drawtiming-0.7.tar.gz
- cd drawtiming-0.7
- ./configure
- 依照需求 make
make (編譯執行檔)
make install (編譯並自動安裝到)
make check (編譯並測試執行結果) - 回到 Windows, 檢查 *.gif 的結果是否正確
如果只需要在一台機上器上執行 DrawTiming, 到這邊就算完成了。
總計 Cygwin 版完整的 DrawTiming, 過程中除了120KB 的 DrawTiming 原始程式碼之外, 還要下載 Cygwin 將近 80MB 的安裝檔 (含 gcc, ImageMagick, ghostscript ... 等), 安裝之後則變成大約 300MB 的 Cygwin 的執行環境 ....。不過, 這一番辛苦之後可以正確輸出 GIF, JPG, PS, EPS。
.
『免安裝 Cygwin』的 DrawTiming
經過一番嘗試, 我發現可以抽取出一些 DLL, 變成『免安裝 Cygwin』在 Windows 命令列執行的 DrawTiming。而這個『免安裝版』因為字型相依性還沒全部解決, 所以只能輸出 PS, EPS 格式。雖然功能上打了折扣, 但是只需要複製大約 10MB 的檔案, 就 可以在另一台『沒有安裝 Cygwin 的電腦』執行 DrawTiming。
把下面這些檔案, 連同在 Cygwin 底下編譯的 drawtiming.exe 複製到同一個目錄,
其中, type-ghostscript.xml 裡面的路徑設定 /usr/share/ghostscript/fonts/ 要去掉
例如 :
... metrics="/usr/share/ghostscript/fonts/a010013l.afm" glyphs="/usr/share/ghostscript/fonts/a010013l.pfb"
改成 :
... metrics="a010013l.afm" glyphs="a010013l.pfb"
cygbz2-1.dll | 原本在 c:\cygwin\bin 懶得篩選, 也可以 *.dll 全部複製 |
n019*.* | 原本在 c:\cygwin\usr\share\ghostscript\fonts |
type.xml | 原本在 c:\cygwin\lib\ImageMagick-6.4.0\config |
.
2 意見:
發表您的回應2011年7月11日 下午6:34
請問可以幫忙把上面的個人資料刪除嗎?不好意思打擾了
2014年10月31日 上午11:16
張貼留言