首先:C代码的源码安装必须要安装gcc的编译器,CentOS7.0装好之后默认是不安装gcc编译器的。
安装gcc:rpm -ivh gcc-4.8.5-4.el7.x86_64.rpm
安装上g++:rpm -ivh gcc-c++-4.8.5-4.el7.x86_64.rpm
下面介绍安装GTK+要用到的rpm包、源码压缩包、yum安装命令、./configure(配置)时用到的参数以及安装了那些东西,安装位置:
1、rpm包在CentOS光盘的Packages文件夹中又几乎全部的rpm包,上面安装编译器的包就是从Packages文件夹中找到的,基本不用另
外下载。查找某个rpm包命令:ls -l | grep [xxxx]
2、源代码压缩包在GTK+官网上需要Glib2.50,ATK2.22,Gdk-Pixbuf2.36,GObject-Introspection1.50,Pango1.40,GTK+3.22
六个源代码压缩包,实际安装过程中由于依赖关系存在还可能需要其他的源代码包,等用到再作说明。GTK+官网所需源码包截
图(GTK+的官网没事多看看):
3、yum命令安装,既然Packages里面有几乎全部的rpm包干嘛还使用yum命令?实际安装包过程中,包的依赖包太多,依赖包又需要
大量其他的依赖包,容易搞混,使用一个yum命令轻松搞定。
4、源码安装库或者程序是./configure这一步一般不用给出参数,大不了给出--PRefix=/opt/gtk+参数更改默认的安装位置,安装
gtk+的过程中还会用到其他的参数用到时候再做说明。
5、安装位置:在gtk+的安装过程中,所有源码安装的文件都默认安装在/usr/local下的bin,include,lib,share。bin下是二进制的可执行
命令,include下是C语言的头文件,就是.h文件,lib里面就是一些库文件,share就是一些说明文档、帮助文档,就是是用man命
令是出来的帮助。
在安装GTK+之前先介绍GTK+所需要的每一个依赖包或者库的作用,下面这张图很详细说明了GTK+的构成:
1)Glib:The GLib library provides core non-graphical(绘画的) functionality(功能) such as high level data types, Unicode
manipulation(操作、控制), and an object and type system to C programs(GTK+官网对Glib库的介绍)。其实就
是linux平台下常用的C语言函数库,提供了C语言的常用数据结构的定义、相关的处理函数,有趣而实用的宏,可
以值的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。
2)ATK:ATK is the accessibility(易接近、可达的) Toolkit(工具包). It provides a set of generic(一般的) interfaces allowing
accessibility technologies such as screen readers to interact (互动)with a graphical user interface(GTK+官网对ATK
库的介绍)。
3)Cairo:在GTK+的官网中并没有提到需要它,实际肯定需要。是一个跨平台的开放源代码的矢量图形函数库,可以提供高质量的显
示和打印输出。主战场在Linux的Gnome桌面环境领域。
4)Gdk-Pixbuf:provides facilities(能力,场,设备) for loading images in a variety of file formats(GTK+官网对Gdk-Pixbuf的介
绍)。做界面开发吗,专门处理图片的。
5)Gobject-Introspection:is a framework for making introspection(自我反省; 内省) data available to language
bindings(GTK+官网对GIOde介绍)。上图中GIO,用于产生与解析 C 程序库 API 元信
息,以便于动态语言(或托管语言)绑定基于 C + GObject 的程序库。
6)Pango:is a library for internationalized text handling(GTK+官网对Pango的介绍)。国际化的文本处理库,说白了处理文字
的。
第一步:glib-2.50.2安装:
1)zlib-devel,光盘镜像中有 [root@CentOS Packages]# rpm -ivh zlib-devel-1.2.7-15.el7.x86_64.rpm
2)libffi-devel,光盘镜像中有 [root@CentOS Packages]# rpm -ivh libffi-devel-3.0.13-16.el7.x86_64.rpm
3)libmount-devel,镜像中也含有该包,不过有依赖关系,依赖关系并不多,可以尝试一个个手动装上去,为了方便使用yum命
令 [root@CentOS Packages]# yum install libmount-devel
4)pcre库光盘中没有需要到官网http://www.pcre.org/下载源代码包。具体分4步进行:
1、配置./configure --enable-utf-8 --enable-unicode-properties 其中给出的配置参数是防止在glib在make是出现The system-
supplied PCRE does not support unicode properties or UTF-8的错误。
2、构建make
3、安装make install(气质就是把这些二进制命令、头文件、库文件、帮助文档拷贝到安装目录对应的文件夹下) 注意使用root权
限。
4、配置PKG_CONFIG_PATH环境变量 安装库文件时都会在安装目录的lib/pkgconfig目录下生成.pc文件,这个.pc文件记录着库的
名称、版本、安装路径等信息(有兴趣的话可以找到文件打开看看)。配置PKG_CONFIG_PATH变量就是告诉pkg-config程序除了
在系统默认路径下搜索.pc文件,还要到用户配置的目录下搜索.pc文件。后面还会有一个LB_LIBRARY_PATH变量,用到时再作
说明。配置如下:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH5)1至4步只是把要安装glib的准备工作做完,正式开始源码安装glib,也是分4步:
1、./configure 想要改变安装路径的话就加--prefix=参数,本次安装过程中不需要。
2、make
3、make install 在该文件夹下没有吸入权限的话,使用root权限
4、配置环境变量 此时不仅要配PKG_CONFIG_PATH,还有LD_LIBRARY_PATH,该变量的作用是在编译期间或者程序运行期间所需
要的动态库路径,配置如下:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATHexport LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH如果没有配置LD_LIBRARY_PATH变量,发现在后续的gtk+安装中会出现’pkg-config --modversion glib-2.0‘ returned
2.50.2,but GLIB(2.42.2) was found!的问题,并提示移除老版本的glib。在网上也有人遇到这样的问题并且给出了删除
老版本glib的方法,but经过本人认真分析、仔细检查在/usr下的bin、include、lib、share目录并没有任何glib命名或开
头的任何文件或者文件夹,估计glib2.42.2根本没有安装(至少没有装在/usr这个目录下)。后来也是在网上查到配置LD
_LIBRARY_PATH这个变量可以解决在后续安装中出现的这个问题。
第二步:atk-2.22.0安装,在前面的基础上进行配置、构建、安装,不会出现任何问题。
1)./configure 不用给出配置参数,除非你要改变安装路径
2)make
3)make install
第三步:安装cairo开发包,关于cairo有2个开发包要装。1、cairo-devel 2、cairo-gobject-devel
1)cairo-devel包光盘中有,但是依赖关系真的很多,好吧!所以使用yum安装
[root@CentOS Packages]# yum install cairo-devel
2)cairo-gobject-devel包光盘中有,直接安装
[root@CentOS Packages]# rpm -ivh cairo-gobject-devel-1.14.2-1.el7.x86_64.rpm
第四步:gdk-pixbuf-2.36.4安装
1)需要3个依赖包libtiff-devel,libjpeg-turbo-devel,libpng,libpng-devel。镜像中都有,直接安装
[root@CentOS Packages]# rpm -ivh libtiff-devel-4.0.3-14.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh libjpeg-turbo-devel-1.2.90-5.el7.x86_64.rpm[root@CentOS Packages]# rpm -e --nodeps libpng-2:1.5.13-7.el7_2.x86_64.rpm [root@CentOS Packages]# rpm -ivh libpng-1.5.13-5.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh libpng-devel-1.5.13-5.el7.x86_64.rpm其中第3行卸载的较新版的libpng,第4行安装了低版本的libpng,主要是为了配对对应的-devel开发包;注意第3步的--nodepes
不顾及依赖关系的卸载包不要随便使用,仅在这里本人试过几次没什么大问题,若是其他包的卸载就不一定了,我就遇到过,比
如终端打不开,--nodepes用的时候要慎重。
2)固定的3步:配置、构建、安装;至于PKG_CONFIG_PATH、LD_LIBRARY_PATH环境变量前面已经配过,在同一个终端下不用再
配。
1、./configure
2、make
3、make install
第五步:gobject-introspection-1.50安装,鉴于CentOS7.0中gobject-introspection-1.42包已经被安装,只要把光盘中对应的-devel包装
上就行了,不安装1.50版本的也行。gobject-introspection-devel有依赖关系,按顺序安装。
1)依赖包顺序是m4、perl-Data-Dumper、autoconf、perl-Thread-Queue、perl-Test-Harness、automake、libtool;
python-tempita、pyOpenSSL、python-paste、python-beaker、python-markupsafe、python-mako(这些包镜像中都有)
[root@CentOS Packages]# rpm -ivh m4-1.4.16-10.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh perl-Data-Dumper-2.145-3.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh autoconf-2.69-11.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh perl-Thread-Queue-3.02-2.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh perl-Test-Harness-3.28-3.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh automake-1.13.4-3.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh libtool-2.4.2-20.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh python-tempita-0.5.1-6.el7.noarch.rpm[root@CentOS Packages]rpm -ivh pyOpenSSL-0.13.1-3.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh python-paste-1.7.5.1-9.20111221hg1498.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh python-beaker-1.5.4-10.el7.noarch.rpm[root@CentOS Packages]# rpm -ivh python-markupsafe-0.11-10.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh python-mako-0.8.1-2.el7.noarch.rpm2)镜像中有gobject-introspection-devel-1.42.0-1.el7.x86_64.rpm,直接安装
[root@CentOS Packages]# rpm -ivh gobject-introspection-devel-1.42.0-1.el7.x86_64.rpm第六步:pango-1.40.3安装 先说明镜像中含有pango和pango-devel的1.40.3版本,但是gtk+3.22.7需要1.37.3以上的版本,只能源码安装了。
1)安装依赖包libicu-devel、harfbuzz-devel、libxft-deve
[root@CentOS Packages]# rpm -ivh libicu-devel-50.1.2-15.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh harfbuzz-devel-0.9.36-1.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh libXft-devel-2.3.2-2.el7.x86_64.rpm2)传统的3步搞定,./configure、make、makeinstall,环境变量在前面已经配过,同个终端下不用再配。
配置完成后出现会下面内容,输出$?值为0即配置正确。
第七步:gtk+-3.22.7安装,在配置过程中通过错误提示安装对应的rpm包。
1)配置错误XIput2 extension not found 安装libXi-devel包
配置错误No package ’epoxy‘ found 使用yum安装libepoxy-devel包(镜像中没有该包)
配置错误No package ’atk-bridge-2.0‘ found 这个atk-bridge和第二步安装的atk不是一回事,依次安装dbus-devel,
at-spi2-core-devel。命令如下:
[root@CentOS Packages]# rpm -ivh libXi-devel-1.7.4-2.el7.x86_64.rpm[root@CentOS Packages]# yum install libepoxy-devel[root@CentOS Packages]# rpm -ivh dbus-devel-1.6.12-13.el7.x86_64.rpm[root@CentOS Packages]# rpm -ivh at-spi2-atk-devel-2.8.1-4.el7.x86_64.rpm2)经典的3步:配置、构建、安装。其中为例在make时不出现Couldn't find include 'GdkPixbuf-2.0.gir'问题,使用./configure --
enable-introspection=no
3)查看gtk+的版本:
终于装完了,大年初三那天晚上装完后,内心的小激动一晚上没有睡着觉。
新闻热点
疑难解答