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

就能看到经典的老虎


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