MinGW,MSYS,GTK...編譯libsvg,libsvg-cairo,...寫一個svgviewer.exe

一、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

就能看到經典的老虎


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章