纪念一次Ubuntu8.04下的GTK源码安装经历
GTK依赖于特定的库:
GLib 库
ATK 库
Cairo 库
Pango 库
依赖库的安装顺序:
根据依赖关系的要求,库的安装要按照这样的先后顺序进行:
GLib、Atk、Cairo、Pango、Gtk+.
解压bz2和xz包命令及源码编译GTK+库:
tar xvfj gtk+-3.2.0.tar.bz2
tar xvfJ gtk+-3.2.0.tar.xz
./configure --prefix=/opt/gtk
make
make install
CPPFLAGS="-I/opt/gtk/include"
LDFLAGS="-L/opt/gtk/lib"
PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
LD_LIBRARY_PATH="/opt/gtk/lib"
PATH="/opt/gtk/bin:$PATH"
export LD_LIBRARY_PATH PATH
GTK依赖于特定的库:
GLib 库
ATK 库
Cairo 库
Pango 库
依赖库的安装顺序:
根据依赖关系的要求,库的安装要按照这样的先后顺序进行:
GLib、Atk、Cairo、Pango、Gtk+.
解压bz2和xz包命令及源码编译GTK+库:
tar xvfj gtk+-3.2.0.tar.bz2
tar xvfJ gtk+-3.2.0.tar.xz
./configure --prefix=/opt/gtk
make
make install
CPPFLAGS="-I/opt/gtk/include"
LDFLAGS="-L/opt/gtk/lib"
PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig"
export CPPFLAGS LDFLAGS PKG_CONFIG_PATH
LD_LIBRARY_PATH="/opt/gtk/lib"
PATH="/opt/gtk/bin:$PATH"
export LD_LIBRARY_PATH PATH
如果出现网络断开的情况,则环境变量需要重新设置
Linux下解压tar.xz包方法:
先在下面这个站点下载解压工具 http://tukaani.org/xz/xz-4.999.9beta.tar.bz2
$tar -jxvf xz-4.999.9beta.tar.bz2
$./configure --prefix=/opt/gnu/xz
$make
$sudo make install
$ln -s /opt/gnu/xz/bin/xz /bin/xz (前面那个路径可能有差异,自己进去看看)
$xz -d ***.tar.xz
$tar -xvf ***.tar
安装GLib
可能会报Working zlib librar and headers not found:
下载zlib包
$tar -xvzf zlib-1.2.3.tar.gz
$cd zlib-1.2.3.tar.gz
$./configure
$make
$sudo make install
可能会报Package requirements (libffi >= 3.0.0) were not met: No package ‘libffi’ found
下载libffi包
$tar -xvzf libffi-3.0.11.tar.gz
$cd libffi-3.0.11
$./configure
$make
$sudo make install
可能会报Your must have either have gettext support in your C library, or use the GNU gettext library:
下载gettext包
$tar -xvzf gettext-0.18.1.1.tar.gz
$cd gettext-0.18.1.1
$./configure
$make
$sudo make install
安装Atk
安装GDK
可能会报TIFF loader will not be built(TIFF library not found):
下载tiff包
$tar -xvzf tiff-4.0.2.tar.gz
$cd gettext-4.0.2
$./configure
$make
$sudo make install
可能会报JPEG loader will not be built(JPEG library not found):
下载libjpeg包
$tar -xvzf jpegsrc.tar.gz
$cd jpegsrc
$./configure
$make
$sudo make install
可能会报PNG loader will not be built(PNG library not found):
下载libpng包
$tar -xvzf libpng-1.2.50.tar.gz
$cd libpng-1.2.50
$./configure
$make
$sudo make install
安装Cairo
可能会报mandatory image surface backend feature could not be enabled:
下载pixman-0.26.2包
$tar -xvzf pixman-0.26.2.tar.gz $cd pixman-0.26.2 $./configure $make $sudo make install
需要安装xcb-proto, libpthread-stubs, xproto, libXau, libxcb
需要安装libxml2库
需要安装freetype库和fontconfig库
下载freetype包
$tar -xvzf freetype-2.3.5.tar.gz
$cd freetype-2.3.5
$./configure
$make
$sudo make install
下载fontconfig包
$tar -xvzf fontconfig-2.10.1.tar.gz
$cd fontconfig-2.10.1
$./configure
$make
$sudo make install
然后安装Cairo库
安装libX11(即xlib库)和libXext库,需要安装多个依赖库和工具库。
安装Pango
可能会报Could not enable any of FreeType,X11,Cairo,or Win32 backends,则修改Pango的Configure文件:
have_cairo=true
have_cairo_freetype=true
安装GTK+
可能会报XInput2 extension not found:
无法找到XInput2文件,
安装Libxi-1.4.0库
此处略去……
安装过程真是险象丛生,不过终于成功了。
切记:安装过程中一定要注意安装包的版本是否匹配,否则会报错。
gtk编程实例
gcc `pkg-config gtk+-3.0 --cflags --libs` -o helloworld helloworld.c
注意是反单引号
export DISPLAY=127.0.0.1:10.0
./helloworld
弹出窗口
问题及解决方案:
Ubuntu本来是自动启动图形界面的,可是却启动不了显示:
Loading, pease wait...
Kinit: name_to_dev_t(/dev/disk/by-uuid/104ad992-ca26-4337-90a1-17f14a0ea667)= sda8(8,8)
kinit: No resume image, doing normal boot……
解决方法:
一般是用 swap 分区保存系统休眠恢复的镜像,所以 /etc/initramfs-tools/conf.d/resume 记录的是 RESUME=UUID=104ad992-ca26-4337-90a1-17f14a0ea667,也就是 swap 的UUID。如果上次是休眠的话,会自动加载休眠时保存的状态。如果上次是关机断电的话,启动的时候会自动跳过。
休眠功能本来就没什么用,我在Win下也都是从来不用这个功能的,直接屏蔽掉就OK啦!
sudo vi /etc/initramfs-tools/conf.d/resume
#RESUME=UUID=104ad992-ca26-4337-90a1-17f14a0ea667
update-initramfs -u
如果ubuntu出现欢迎程序出错的情况,
可以使用下面的解决方法:
sudo gedit /xxxx/…/etc/gdm/gdm.conf-custom
打开找到 [daemon],在下面一行加入
Greeter=/usr/lib/gdm/gdmlogin