一、MinGW,MSYS,GTK...編譯libsvg,libsvg-cairo,...
1. 下載MinGW, MSYS, GTK等環境基礎環境安裝包,並安裝。
a) MinGW, MSYS:
訪問http://sourceforge.net/projects/mingw/files/ 。
選擇“Download Now!MinGW-5.1.6.exe”、 展開MSYS Base System->msys-1.0.11,選擇“MSYS-1.0.11.exe”。
安裝使用缺省路徑C:/MinGW和C:/msys/1.0
b) GTK合集
訪問http://gladewin32.sourceforge.net/
下載 gtk-2.12.9-win32-2.exe、gtk-dev-2.12.9-win32-2.exe
安裝使用缺省路徑C:/GTK
c) gdb for MinGW
下載http://jaist.dl.sourceforge.net/sourceforge/mingw/gdb-5.2.1-1.exe
d) ActivePerl
訪問http://www.activestate.com/activeperl/
下載ActivePerl-5.10.1.1006-MSWin32-x86-291086.msi
perl在編譯pixman的時候會需要,而pixman並沒有被缺省包含在gtk-dev-2.12.9-win32-2.exe程序中。
e) 依次安裝上述程序,環境變量會被安裝包自動設置。
2. 下載pixman、libsvg、libsvg-cairo並編譯安裝(cairo、libpng、libjpeg、zlib等已經被安裝在C:/GTK中了)
a) pixman,訪問http://cairographics.org/releases/ 下載(如前所述,pixman沒有被gtk-dev-2.12.9-win32-2.exe打包進去,所以才自己編譯)
pixman-0.17.2.tar.gz
b) 訪問http://www.cairographics.org/snapshots/ 下載
libsvg-0.1.4.tar.gz
libsvg-cairo-0.1.6.tar.gz
c) 編譯方法很簡單,先解壓,然後進入源代碼主目錄。依次運行
./configure --prefix=/c/GTK
make
make install
之所以使用--prefix=/c/GTK,是因爲我希望把xxx.a庫文件和包含頭文件安裝到/c/GTK/lib和/c/GTK/include目錄下,這樣文件目錄比較整潔。
當你遇到“pkg-config找不到xxx庫”時,不要慌張,在當前窗口鍵入以下命令再試試:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/mingw/lib/pkgconfig:/usr/local/lib/pkgconfig
3. 如果一切順利,應該可以在C:/GTK/lib下看到libcairo.a、libsvg.a、libsvg-cairo.a和其它庫文件,當然C:/GTK/include下也應該有相應的.h頭文件。
二、編寫一個查看svg的小程序svgviewer.exe
svgviewer至少需要調用gtk及cairo,並在窗口繪圖的基礎框架,所以我參考了cairo clock的教學文章和源碼,然後加以發展。
http://gnomejournal.org/article/34/writing-a-widget-using-cairo-and-gtk28
文件清單如下:
svgviewer.h(由clock.h發展而來)
svgviewer.c(由clock-ex1.c發展而來)
svgviewer_main.c(由main.c發展而來)
makefile(自己寫的)
注意:
在編寫makefile過程中,因爲錯誤信息被顯示爲亂碼而不知所措,鬱悶了很長時間。後來根據一篇解決MSYS下中文亂碼問題的文章纔將當前語言環境改爲英文。
export LANG=en
或者設置環境變量LANG=en
後來才發現錯誤多半是 undefined reference to 'xxx_function',那麼在gcc編譯指令後加入-lxxx即可。
整個研究過程遠比文章要來的複雜。比如我是在經歷了windows的失敗痛苦之後,先在ubuntu下獲得成功經驗,纔回到windows下開發成功的。
分享源碼如下:
[svgviewer.h]
[svgviewer.c]
[svgviewer_main.c]
[makefile]
該程序使用方法:
./svgviewer.exe tiger.svg
就能看到經典的老虎