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所产生的. 在最下面是错误发生的地方.