這一節要描述的是如何編譯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