这一节要描述的是如何编译GTK+函式库以及需要的相关函式库。
有一些应用程式在GTK应用程式内使用gtkglext函式库来建构OpenGL内容,不幸地,在win32上,过期的gtkglext函式库似乎不能跟较新的GTK函式库一起工作,假如你对gtkglext没有兴趣,你可以使用GTK 2.22,假如你需要gtkglext的支援,你必须使用GTK 2.16,因为ㄚ琪没有兴趣使用这个函式库,所以还是跳到最新的GTK 2.22.1来玩吧。
这个会影响到pango、atk跟gtk+:照着你要的版本做适当的安装,不要同时安装两个版本。
建构libiconv
libiconv是文字编码的函式库
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && \ tar xzf libiconv-1.13.1.tar.gz && \ cd libiconv-1.13.1 && \ ./configure --prefix=$LOCALDESTDIR --disable-shared && \ make && \ make install
之后,从静态函式库libiconv.a
做iconv.dll:
cd /usr/local/lib && \ a2dll libiconv.a -o iconv.dll && \ mv -iv iconv.dll /usr/local/bin/
你可以用mingw-get install mingw-utils来安装,然后修改/usr/local/lib/libiconv.la的开头像下面这样:
# The name that we can dlopen(3). dlname='../bin/iconv.dll' # Names of this library. library_names='libiconv.a'
建构gettext
gettext是一个本地化及翻译程式的工具
- 网站:http://www.gnu.org/software/gettext
- 下载:gettext-0.18.1.1.tar.gz
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-0.18.1.1.tar.gz && \ tar xzf gettext-0.18.1.1.tar.gz && \ cd gettext-0.18.1.1 && \ ./configure --prefix=$LOCALDESTDIR --enable-threads=win32 --enable-relocatable && \ cd gettext-runtime && \ make && \ make install 然后,从静态函式库
libintl.a
做intl.dll像这样:cd /usr/local/lib && \ a2dll libintl.a -o intl.dll –liconv && \ mv -iv intl.dll /usr/local/bin/
注:如果照原着做再回来这样做,会有一些问题,所以ㄚ琪需要观察这个问题的严重性!但是看起来编译下面的glib会有问题,所以ㄚ琪看来只好重砍MinGW来编译了!
建构glib
glib是形成GTK+基础的低阶核心函式库
建构及安装glib,可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/glib/2.26/glib-2.26.1.tar.gz && \ tar xzf glib-2.26.1.tar.gz && \ cd glib-2.26.1 && \ ./configure --prefix=$LOCALDESTDIR --with-threads=win32 --with-pcre=internal && \ make && \ make install
建构pkg-config
pkg-config是一个在编译应用程式跟函式库时使用得很有帮助的工具。
这个建构会取代我们之前安装的静态执行档。
建构跟安装pkg-config可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://pkgconfig.freedesktop.org/releases/pkg-config-0.25.tar.gz && \ tar xzf pkg-config-0.25.tar.gz && \ cd pkg-config-0.25 && \ ./configure --prefix=$LOCALDESTDIR --with-installed-glib && \ make && \ make install
Building freetype
Freetype是用来绘制TrueType字型的函式库。
建构及安装freetype可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://downloads.sourceforge.net/project/freetype/freetype2/2.4.3/freetype-2.4.3.tar.gz && \ tar zxf freetype-2.4.3.tar.gz && \ cd freetype-2.4.3 && \ ./configure --prefix=$LOCALDESTDIR && \ make && \ make install
预设情况,freetype停用一些有专利限制的选项,你可以在解压缩原始码后编辑档案include/freetype/config/ftoption.h 来启用它们,把#define FT_CONFIG_OPTION_SUBPIXEL_RENDERING这一行的注解取消,在启用这个选项之前请确认读过http://www.freetype.org/patents.html。
建构expat
expat是一个XML剖析函式库
- 网站:http://expat.sourceforge.net/
- 下载:http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz
建构跟安装expat可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://downloads.sourceforge.net/project/expat/expat/2.0.1/expat-2.0.1.tar.gz && \ tar zxf expat-2.0.1.tar.gz && \ cd expat-2.0.1 && \ ./configure --prefix=$LOCALDESTDIR && \ make && \ make install
建构libxml2
libxml2是一个XML剖析函式库
建构跟安装libxml2可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c ftp://xmlsoft.org/libxml2/libxml2-2.7.8.tar.gz && \ tar zxf libxml2-2.7.8.tar.gz && \ cd libxml2-2.7.8 && \ ./configure --prefix=$LOCALDESTDIR --with-threads=no && \ make && \ make install
建构fontconfig
fontconfig是一个字型的订制和配置函式库
建构跟安装fontconfig可以执行下面命令:
cd $LOCALBUILDDIR && \ wget -c http://fontconfig.org/release/fontconfig-2.8.0.tar.gz && \ tar xzf fontconfig-2.8.0.tar.gz && \ cd fontconfig-2.8.0 && \ ./configure --prefix=$LOCALDESTDIR --disable-docs && \ make && \ make install
建构pixman
pixman是一个低阶的像素处理函式库
建构跟安装pixman可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://cairographics.org/releases/pixman-0.21.2.tar.gz && \ tar xzf pixman-0.21.2.tar.gz && \ cd pixman-0.21.2 && \ ./configure --prefix=$LOCALDESTDIR && \ make && \ make install
建构cairo
cairo是一个2d绘图函式库
建构跟安装cairo可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://cairographics.org/releases/cairo-1.10.0.tar.gz && \ tar xzf cairo-1.10.0.tar.gz && \ cd cairo-1.10.0 && \ ./configure --prefix=$LOCALDESTDIR --disable-pthread && \ make && \ make install
建构pango
pango是一个文字描绘函式库
- 下载GTK+ 2.16的版本:pango-1.24.5.tar.bz2
- 下载GTK+ 2.22的版本:pango-1.28.3.tar.bz2
GTK+ 2.16版本:建构跟安装pango可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/pango/1.24/pango-1.24.5.tar.bz2 && \ tar xjf pango-1.24.5.tar.bz2 && \ cd pango-1.24.5 && \ ./configure --prefix=$LOCALDESTDIR --with-included-modules=yes && \ make && \ make install
GTK+ 2.22版本:建构跟安装pango可以执行下面的命令:
cd $LOCALBUILDDIR && \
wget -c http://ftp.gnome.org/pub/gnome/sources/pango/1.28/pango-1.28.3.tar.bz2 && \
tar xjf pango-1.28.3.tar.bz2 && \
cd pango-1.28.3 && \
./configure –prefix=$LOCALDESTDIR –with-included-modules=yes && \
make && \
make install
组态选项:
- --with-included-modules=yes
- 这个选项可以让pango模组静态连结入主要的函式库
建构atk
atk是gnome的辅助工具
- 下载GTK+ 2.16用的版本:atk-1.26.0.tar.bz2
- 下载GTK+ 2.22用的版本:atk-1.32.0.tar.bz2
GTK+ 2.16用的版本:建构跟安装atk可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/atk/1.26/atk-1.26.0.tar.bz2 && \ tar xjf atk-1.26.0.tar.bz2 && \ cd atk-1.26.0 && \ ./configure --prefix=$LOCALDESTDIR && \ make && \ make install
GTK+ 2.22用的版本:建构跟安装atk可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/atk/1.32/atk-1.32.0.tar.bz2 && \ tar xjf atk-1.32.0.tar.bz2 && \ cd atk-1.32.0 && \ ./configure --prefix=$LOCALDESTDIR && \ make && \ make install
建构Gdk-PixBuf
GdkPixBuf提供像素缓冲区跟绘制的功能
- 下载GTK+ 2.22用的版本:gdk-pixbuf-2.22.1.tar.bz2
预设的建构会有奇怪的错误讯息,为了变通,我们必须使用pkg-config外覆指令码:
GTK+ 2.22用的版本:建构跟安装GdkPixBuf可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/gdk-pixbuf/2.22/gdk-pixbuf-2.22.1.tar.bz2 && \ tar xjf gdk-pixbuf-2.22.1.tar.bz2 && \ cd gdk-pixbuf-2.22.1 && \ ./configure --prefix=$LOCALDESTDIR --with-included-loaders=yes --without-libjasper --disable-gdiplus && \ make && \ make install
组态选项:
- --with-included-loaders=yes
- 这个选项让gdk影像载入器可以静态连结入gdk-pixbuf函式库
- --without-libjasper
- 停用JPEG2000支援
- --disable-gdiplus
- 停用win32 gdiplus支援
建构gtk+
gtk+是一个应用程式架构函式库
- 网站:http://www.gtk.org/
- 下载GTK 2.16:gtk+-2.16.6.tar.bz2
- 下载GTK 2.22:gtk+-2.22.1.tar.bz2
GTK+ 2.16用的版本:建构跟安装gtk+可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/gtk+/2.16/gtk+-2.16.6.tar.bz2 && \ tar xjf gtk+-2.16.6.tar.bz2 && \ cd gtk+-2.16.6 && \ ./configure --prefix=$LOCALDESTDIR --without-libjasper --with-gdktarget=win32 --disable-gdiplus \ --disable-modules --with-included-immodules=ime --with-included-loaders=yes && \ make && \ make install
GTK+ 2.22用的版本:建构跟安装gtk+可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://ftp.gnome.org/pub/gnome/sources/gtk+/2.22/gtk+-2.22.1.tar.bz2 && \ tar xjf gtk+-2.22.1.tar.bz2 && \ cd gtk+-2.22.1 && \ ./configure --prefix=$LOCALDESTDIR --with-gdktarget=win32 --disable-modules --with-included-immodules=ime && \ make && \ make install
组态选项:
- --disable-modules
- 停用动态载入模组
- --with-included-immodules=ime
注意:假如make有下面的错误讯息:
- ./gtk-update-icon-cache: Bad file number
你必须以administrator权限执行msys shell然后重新make。
(见http://www.mail-archive.com/gtk-list@gnome.org/msg27503.html)
参考:
到这里,你应该可以测试你的gtk安装:
cd demos
./pixbuf-demo
你应该可以看到上面有旋转按钮的视窗
cd gtk-demo
gtk-demo
上面的程式展示gtk元件以及范例程式码。
建构gtkglext
gtkglext是gtk+的opengl扩充函式库
- 网站:http://projects.gnome.org/gtkglext/
- 下载:http://downloads.sourceforge.net/gtkglext/gtkglext-1.2.0.tar.gz
在win32上,gtkglext无法跟gtk+ 2.18一起工作
建构跟安装gtkglext可以执行下面的命令:
cd $LOCALBUILDDIR && \ wget -c http://downloads.sourceforge.net/gtkglext/gtkglext-1.2.0.tar.gz && \ tar xzf gtkglext-1.2.0.tar.gz && \ cd gtkglext-1.2.0 && \ cat configure | sed 's/pangox/pangowin32/' > configure.new && \ mv configure.new configure && \ ./configure --prefix=$LOCALDESTDIR --with-gdktarget=win32 --enable-debug=no && \ make && \ make install
命令解释:
- cat configure | sed 's/pangox/pangowin32/' > configure.new && mv configure.new configure
- 这些命令更正configure指令码所以它会跟pango win32函式库连结而不会跟pango X11函式库连结。
建构范例程式:
cd examples make wglinfo
执行下面的命令来建构跟安装gtkglext的git版本:
git clone git://git.gnome.org/gtkglext gtkglext-git && \ cd gtkglext-git && \ mv docs/reference/gtkglext/Makefile.am docs/reference/gtkglext/Makefile.am.org touch docs/reference/gtkglext/Makefile.am autoreconf -fi ./configure --prefix=$LOCALDESTDIR --with-gdktarget=win32 & \ make && \ make install
执行范例程式来测试你的建构:
cd examples ./wglinfo