GTK+引起的一场腥风血雨
本文的主要目的是来讲一下,安装GTK+的血泪史,(说的有点夸张哈,不过有时候真的让人抓狂)。对于GTK+是什
么,有什么用,大家可以百度|谷歌一下就行了。
在安装GTK之前应该做的事:
GTK依赖于许多其他的库和工具,如果你是以源码安装包的方式自己编译安装的话,你就应该在安装GTK之前,确定这些已经安
装在你的系统上了,(应为这些依赖系统是不会给你自动搜索安装的)。
一.必备工具
1.pkg-config 它是一个可以用于追踪编译GTK+时所需的依赖库的编译标志的工具(对于每个支持库来说,就是一个安装在标准位置
的.pc文本文件,这个文件里包含了库所需要的编译标志和其他一些版本信息)
2.CNUmake GTK+的makefiles可能会在大多数版本的make正常工作,但我们还是强烈建议安装GNUmake (可能gmake这个名
字,更有利于你搜索到它);
二.依赖库
1.GNU libiconv library 字符集转换程序,提供iconv()函数,可将多种编码的字符集互相转换,如将GB2312->UTF-8
下载地址:http://www.gnu.org/software/libiconv
2.Thelibintl library 它包含在GNUgettext package安装里,可用于处理消息翻译数据库。
下在地址:http://www.gnu.org/software/gettext/
3.pango依赖于一些xwindow的函数库如xorg。
4.fontconfig 它是一个Pango依赖库,Pango利用可以找到方便的实现字体与其名字相匹配。
下载地址:http://www.fontconfig.org/
5.Glib :它提供了许多内核级的非图形功能,比如高级的数据类型,支持操作Unicode,以及一些c程序的对象和数据类型。
下载地址:https://download.gnome.org/sources/glib/
6.GdkPixbuf:它提供了一系列的可用于加载不同格式的图像的工具
下载地址:https://git.gnome.org/browse/gdk-pixbuf/
7.Pango:它是一个可以用于高质量渲染国际化文字的函数库
下载地址:https://download.gnome.org/sources/pango/
8.ATK :它是一个可访问性工具箱,它提供了一系列的可编程的通用接口,例如,提供读屏功能来与图形化界面使用者进行交互。
下载地址:http://download.gnome.org/sources/atk/
9.Gobjiect Introspection:它是一个可用于语言绑定的数据自检框架
下载地址:http://live.gnome.org/GObjectIntrospection
以上的这些依赖库,需要你在安装GTK+ 之前安装,不然会出现很多稀奇古怪的错误。
三.设置环境变量
CPPFLAGS="-I/opt/gtk/include" //告诉编译器去那里找需要的包含文件,本文gtk安装在/opt/gtk目录下)
LDFLAGS="-L/opt/gtk/lib" //和CPPFLAGS作用一样,只不过它的服务对象是链接器
PKG_CONFIG_PATH="/opt/gtk/lib/pkgconfig" //告诉pkg-config去那里找编译所需的编译标志
exportCPPFLAGS LDFLAGS PKG_CONFIG_PATH
LD_LIBRARY_PATH="/opt/gtk/lib" //告诉系统动态连接器,新增的支持库安装在那
PATH="/opt/gtk/bin:$PATH" //用于指出所有已经安装的不同依赖库的二进制文件所在地
exportLD_LIBRARY_PATH PATH
关于环境变量的知识请移步:
http://soft.chinabyte.com/os/169/11412169.shtml
四.安装
1.下载GTK+
官方下载地址:https://developer.gnome.org/gtk3
2.打开模拟终端,在命令行中输入:
tarxvfJ gtk+-3.2.0.tar.xz
3.命令行中,进入gtk+-3.2.0文件夹,而后输入:
./configure–prefix=/opt/gtk (--prefix =安装目录路径)
4.configure成功后依次输入:
make
makeinstall
5.安装完成。
五.可能出现的错误:
==================================================================================================
错误1.*** Could not enable any backends. *** Must have at least one backendto build Pango.
详情:
checkingfor pkg-config... /usr/bin/pkg-config
checkingpkg-config is at least version 0.9.0... yes
checkingfor HARFBUZZ... no
no
checkingfor CoreText availability... no
checkingfor CAIRO... no
no
configure:error: *** Could not enable any backends.
***Must have at least one backend to build Pango.
sfd@sfdream:~/下载/pango-1.36.5$
分析:没有安装cairo(checkingfor CAIRO... no ),安装即可。
解决办法:命令行输入:sfd@sfdream:~$sudo apt-get install libcairo2-dev
---------------------------------------------------------失败-------------------------------------------------------------------------------------------------------------------
cairo安装后,再次安装Pango,出现新错误。
详细信息:
checkingfor CAIRO... yes
checkingwhich cairo font backends could be used... none
configure:Disabling cairo support
configure:error: *** Could not enable any backends.
***Must have at least one backend to build Pango.
sfd@sfdream:~/下载/pango-1.36.5$
分析:
由错误信息,我们易知,cairo已经安装了,但是没有一个可用的后端(Couldnot enable any backends. )在Pango的官网上我了
解到,Pango的核心排版引擎只有在有字体后端的情况下才可以被调用。其中字体后端有单个基本类型可供选择:
1.客户端字体使用的是FreeType和 fontconfig函数库,通过HarfBuzz来处理复合文本的编码。
2.windows系统中的本地字体使用Uniscribe来处理复合文本。
3.MacOX则使用CoreText来处理复合文本。
显然这里我们需要的是第一种,故再安装FreeType和 fontconfig以及harfbuzz。
解决方法:
sfd@sfdream:~$sudo apt-get install libfreetype6-dev fontconfig libharfbuzz-dev
//ps:安装包的名字可以通过:apt-cachesearch {部分名字}来搜索
安装完成后,继续Pango的安装。
成功安装,结果如下:
config.status:executing pango/module-defs-fc.c commands
config.status:executing pango/module-defs-win32.c commands
config.status:executing pango/module-defs-coretext.c commands
config.status:executing pango/module-defs-lang.c commands
config.status:executing pango/pango-features.h commands
config.status:creating pango/pango-features.h
config.status:pango/pango-features.h is unchanged
configuration:
backends:Cairo FreeType
sfd@sfdream:~/下载/pango-1.36.5$
-----------------------------------------------------------------成功----------------------------------------------------------------------------------------------------------
====================================================================================================
错误2:gobject-introspection1.41 安装失败
详细信息:
configure:error: bison not found but required
sfd@sfdream:~/下载/gobject-introspection-1.41.3$
分析:
找不到bison,安装bison即可
解决方法:
sfd@sfdream:~$sudo apt-get install bison
-----------------------------------------------------------------失败------------------------------------------------------------------------------------------------------------
详细信息:
checkingfor headers required to compile python extensions... ./configure:line 14721: /usr/bin/python-config: No
such file or directory
notfound
configure:error: Python headers not found
分析:找不到phthon的头文件,安装python-dev即可
解决方法:
sfd@sfdream:~$sudo apt-get install phython-dev
--------------------------------------------------------------------成功------------------------------------------------------------------------------------------------------------
ps:千万莫听一方之言把python卸了重装,后果将是毁灭的,博主我就是应为卸了python最后搞的好多都东西都不见了,应为你在
卸载python的同时也将许多依赖于它的程序卸了。这就权当一个教训把。
======================================================================================================
错误3.shared-mime-Uniscribeinfo安装失败
详细信息:
...
./configure:line 3935: intltool-update: command not found
checkingfor intltool >= 0.35.0... found
configure:error: Your intltool is too old. You need intltool 0.35.0 or later.
分析:inttool版本太低,升级即可。
解决方法:
sfd@sfdream:~$sudo apt-get install inttool
------------------------------------------------------成功-------------------------------------------------------------------------------------------------------------------------
错误4configure: error: *** XInput2 extension not found.
详细信息:安装GTK+configure时
分析:应该是缺乏xorg,正如其官网所说,他需要xwindow的函数库支持
解决方法:
sfd@sfdream:~$sudo apt-get install xorg-dev
----------------------------------------------------------错误--------------------------------------------------------------------------------------------------------------------
详细信息:
checkingfor ATK... no
configure:error: Package requirements (atk atk-bridge-2.0) were not met:
Nopackage 'atk-bridge-2.0' found
Consideradjusting the PKG_CONFIG_PATH environment variable if you
installedsoftware in a non-standard prefix.
分析:没有安装atk-bridge-2.0,安装即可。
解决方法:
sudoapt-get install libatk-bridge2.0-dev
--------------------------------------------------------------成功-------------------------------------------------------------------------------------------------------------------
=======================================================================================================
至此,整个GTK+的安装就完成了,这个过程中,有遇到困难时一度让我懊恼万分,几欲放弃。也有在柳暗花明之后的欣喜万分。感
谢在这个过程中的那些给我指导的博主们,作为感谢我也将自己的一些经验写下,分享给大家,作为一种开源精神的继承吧。
参考资料:
[1] https://developer.gnome.org/gtk3/stable/gtk-building.html
[2] http://blog.csdn.net/cfy_phonex/article/details/8520958
[3] https://www.ruby-forum.com/topic/170422
[4] http://knityster.blog.163.com/blog/static/143991723200932410280171/
[5] http://blog.csdn.net/cz2009022107/article/details/21011381
[6] http://tieba.baidu.com/p/2302795590
[7]http://zhidao.baidu.com/link?url=3TeA0QbyMyswCR53WcoGIrGj4
NHFxCNc4qETRQ9w5wDtafKokLVjZlVIza5IaNeQnABdNqdyGQHjLBo-X46Jqa
[8]http://blog.csdn.net/sxhong/article/details/740572
[9]http://zhidao.baidu.com/link?url=CB3C9prkBXbL0s1wQk7rXjtsQkydcscYAjB8o5
h90kubVYIzJkwoDqaiqeGrc62Zbs2mHJr2PSKe0jxROsR1c_
---------------------------------------