GTK+引起的一场腥风血雨

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$

分析:没有安装cairocheckingfor 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.客户端字体使用的是FreeTypefontconfig函数库,通过HarfBuzz来处理复合文本的编码。

      2.windows系统中的本地字体使用Uniscribe来处理复合文本。

      3.MacOX则使用CoreText来处理复合文本。

       显然这里我们需要的是第一种,故再安装FreeTypefontconfig以及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$

-----------------------------------------------------------------成功----------------------------------------------------------------------------------------------------------

====================================================================================================

错误2gobject-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_

     ---------------------------------------

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值