2. 如何尋找, 設定, 安裝, 及錯誤處理?
2.1 要執行GTK+需要什麽?
要編譯GTK+, 您只需要C編譯器(gcc)及X Window System及相關函數庫即可.
2.2 要到那裡取得GTK+?
正式的位置:
FTP://ftp.gtk.org/pub/gtk
當然了, 任何ftp.gtk.org映射站都會有最後版本.
2.3 我要如何編譯設定GTK+?
一般來說, 您只需要打入以下命令:
./configure
make
在gtk+-version/目錄下.
2.4 當編譯GTK+時, 我挨了這麽一記: make: file `Makefile' line 456: Syntax error
請確定您正在使用GNU make (用make -v來確認). 有很多希奇但不錯的版本的make, 但不是全部都能處理好自動產生的Makefiles.
2.5 我已經編譯好並安裝好GTK+, 但我不能令任何程式來鏈結它!
這個問題遇得很多, 當GTK+函數庫找不到或是錯誤的版本. 一般, 編譯器會抱怨'unresolved symbol'. 您得要檢查兩件事:
確認函數庫找得到. 您會需要去編輯 /etc/ld.so.conf把GTK函數庫目錄包含進去, 看起來像這樣:
/usr/X11R6/lib
/usr/local/lib
然後要在root下執行 /sbin/ldconfig. 您可以用
gtk-config --libs
來找出GTK正在用的目錄. 假如您的系統並不使用ld.so來找函數庫(像Solaris就是), 那麽您需要使用LD_LIBRARY_PATH環境變數來設定參數 (或編譯該路徑到您的程式, 這裡我就不講了. 若您用Bourne式的shell您可以用(假設您的GTK是在/usr/local/lib):
eXPort LD_LIBRARY_PATH=/usr/local/lib
而在csh, 您可以:
setenv LD_LIBRARY_PATH /usr/local/lib
確定您的linker可以找到正確的函數庫. 假如您的Linux版本已經安裝GTK+(例如, RedHat 5.0), 那麽可能是用舊一點的版本. 現在, 輸入以下命令:
rpm -e gtk gtk-devel
您可能會想要移除這些gtk相關程式: (rpm會告訴您那些是相關的). 假如您沒有RedHat Linux系統, 查看看可能在
/usr/lib
或
/usr/local/lib
包含許多函數庫像libgtk, libgdk, libglib, or libgck. 假如有, 將它們移除 (and any gtk include files, sUCh as /usr/include/gtk and /usr/include/gdk) 並重新安裝gtk+.
2.6 當編譯GTK+程式時, 我中了這麽一記, 找不到"glibconfig.h".
標頭檔"glibconfig.h"被從$exec_prefix/lib/glib/include/移除掉了. $exec_prefix是當您configure時指定給--exec-prefix的設定. 它內定為$prefix, (specified with --prefix), 然後會變成/usr/local/.
這是因為"glibconfig.h"包含了架構獨立的設定資訊, 而其它的檔案都放在$prefix/include, 這樣可以使不同架構平台共用.
GTK+包含了一個shell script, gtk-config, 可以用來找出正確的include路徑. GTK+入門導引有一些范例使用gtk-config. 更復雜的設定可以參考在GTK+內的docs/gtk-config.txt.
假如您正試著要編譯一個老程式, 您可以用這樣的設定:
CPPFLAGS="-I/usr/local/include/glib/include" ./configure
Bourne-compatible shells像bash, 或csh variants可用:
setenv CPPFLAGS "-I/usr/local/include/glib/include"
./configure
(替換/usr/local為適當的$exec_prefix)
2.7 安裝GIMP時, configure說它找不到GTK.
有好幾個可能的理由:
您可能有個老一點的版本的GTK安裝在那裡. 例如RedHat 5.0 安裝了老一點版本的GTK, GIMP沒辦法用. 您應該把舊的版本移除掉, 但小心這樣會把 control-panel的軟體搞亂.
gtk-config 不在您的路徑中, 或有個比較老的版本在您系統中. 輸入:
gtk-config --version
來檢查. 假如它返回一個跟您所想得不一樣的版本, 那麽您有個舊版GTK在系統上.
./configure script找不到GTK函數庫. 因為./configure編譯很多種測試程式, 它需要能夠找出GTK函數庫. 看看上面來解決這個問題.
假如都不是以上所述, 那麽找看看config.log, 這是由./configure所產生的. 在最下面是錯誤發生的地方.