LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1474|回复: 13

GTK+2.4.X编译方法(for MDK 9.1/10.0)

[复制链接]
发表于 2004-12-16 01:53:45 | 显示全部楼层 |阅读模式
一直以来,编译gtk+2.4.x都是一个令我头痛的问题,而且每装一次MDK 10.0,都需要编译一次gtk+2.4。总是“./configure ....”也不是办法。搜了网上许多帖子,参考了其中有关gtk+2.4相关的MDK源码包中的spec文件,写出了一个安装步骤笔记,其中可能有错误的地方和我尚不明白的地方,望大家见谅!

摘要 :介绍有关MDK 9.1/10.0 下编译GTK+2.4.x的方法,并参考了MDK相关源码包的依赖,自制了相关的RPM包和SRPM包。

注意 :本文禁止用于商业用途,并且完全“No warrant”!!!写本文纯属个人兴趣。如有不幸,实属无辜!请做好备份系统的安全措施!

关键词:gtk+2.4.x; 安装顺序; 简单美化

参考连接:[PHP]http://www.linuxsir.cn/bbs/showthread.php?threadid=105467&highlight=openQ[/PHP]
 楼主| 发表于 2004-12-16 12:27:14 | 显示全部楼层
前言:分两大部分,一为从 tar 源码包安装,另一为从 SRPM 包安装。无论是源码包安装还是 SRPM 包安装,务请注意安装的顺序!切记。切记。。。

释疑:本文的操作并不表明 Mandrake 9.2 不可以进行,只是我并无这个版本试验。见谅!

一、tar 源码包的安装方法
序:--工欲善其事,必先利其器。--

1、从网上得到以下必须组成的包: pkgconfig(0.15),glib(2.4.x),atk(1.6 or 1.7),freetype(2.1.4--2.1.9),fontconfig(2.2.1--2.2.3),xft(2.1.2--2.1.6),pango(1.4.1 or 1.6.0),libpng(1.2.5--1.2.7),tiff(3.6.1),jpegsrc.v6b,gtk+(2.4.x)

2、在你安装以前,温馨提示:请备份好你计算机原有的 /usr/lib/gtk-2.0/ 目录下的所有东西,还有 /etc/gtk-2.0 和 /etc/gtk 和 /etc/pango 和 /etc/fonts 目录下的全部配置文件!;)

3、请勿删除原有的gtk+版本的所有包!

第一回:--好的开始是成功的一半。--

***以下操作均为root用户进行,安装之前请把相应的包解压,最好先建立一目录,例如:gtk2.4,把所有的包都放到该目录下,方便以后翻查***

1、安装pkgconfig
./configure --prefix=/usr
make
make install
(下面一步向系统表明PKG_CONFIG_PATH变量)
export PKG_CONFIG_PATH=/usr/lib/pkgconfig:/usr/X11R6/lib/pkgconfig
(完成上一步,或许你不想一次就把下面的所有东西都编译完,那么你可以在你的root目录下的.bashrc文件中加入上面命令,那么下一次只要以root登陆,就可以自动读取上面设好的变量了!)
(转到/usr/X11R6/lib下看看有无pkgconfig目录,没有?建一个呗!)
/sbin/ldconfig

2、安装glib
./configure --prefix=/usr
make
make install
/sbin/ldconfig

3、安装atk
./configure --prefix=/usr
make
make install
/sbin/ldconfig

***至此,初步准备工作完成。***
 楼主| 发表于 2004-12-16 14:07:02 | 显示全部楼层
第二回:--革命尚未成功,同志仍需努力!--
***下面将安装和字体有密切相关的包***

1、安装freetype
./configure --prefix=/usr
make
make install
/sbin/ldconfig

2、安装fontconfig
./configure --sysconfdir=/etc --prefix=/usr --mandir=/usr/share/man
make
(编译时如果在编译docs的部分时候出错的话,请在 ./configure 一步中加入“--disable-docs”参数。)
make install
/sbin/ldconfig

3、安装xft
插语:在[PHP]http://www.linuxsir.cn/bbs/showthread.php?threadid=105467&highlight=openQ[/PHP]帖子中,作者曾提到只能够使用 freetype 2.1.4 这个版本,其实不然。这是由于自2.1.4版本之后,在你freetype的解出目录中的inlcude/freetype目录里 freetype.h 文件发生了一个微妙的变化。经过比较,使用2.1.4版本以上的freetype在进行 libxft-1.32版本 编译时会出现 http://dot.kde.org/1078855423/1078942212/ 所提及的错误。这是为什么呢?原因如下:
在 2.1.4 版本中的 freetype.h ,文件开始的部分如下:
[PHP]#ifndef __FREETYPE_H__
#define __FREETYPE_H__[/PHP]
而在2.1.7版本中(其他大于2.1.4的版本与此类似),文件开始的部分如下:
[PHP]#ifdef FT_FREETYPE_H
#error "`ft2build' hasn't been include yet!"
.........
#endif[/PHP]
这一段之后接着的才是2.1.4版本的原来一段。
    为此,在 1.33 版的 xft 已经把这个问题修正了,详情请看:http://cvsweb.xfree86.org/cvsweb ... r1=1.32&r2=1.33
    所以,倘若你使用的 libXft 是1.32版本的话,建议你使用新版本或者按上面的帖子修改相应部分。
***切记,下载1.33版的libXft之后,我们来继续编译***
./configure --prefix=/usr/X11R6
(注意上面的prefix不要打错了。)
make
make install
/sbin/ldconfig

4、安装pango

插语:无论pango的版本是 1.4.1 or 1.6.0 它们的模块标识都是 1.4.0 ,这一点你可以自己试验一下。
***安装***
./configure --prefix=/usr --sysconfdir=/etc
make
make install
/sbin/ldconfig

***至此,容易出现问题的几步都告一段落了。。。先泡一杯茶吧。 ***
 楼主| 发表于 2004-12-18 12:40:46 | 显示全部楼层
第三回:--暴风雨前的平静。--

1、安装libpng

插语:编译libpng时应选择适合你的操作平台的makefile文件,并且表明你的zlib的库和头文件的位置。这个操作可以通过修改makefile文件中变量值来实现。
***安装步骤如下***
(假设你已经进入了你的libpng解压目录,要做的是把scripts目录下的为linux平台所写的makefile文件makefile.linux拷贝到它的上层目录中,并重命名为makefile,为编译做准备。即如下(1)中的步骤。)
(1) cp scripts/makefile.linux  ../makefile
(2) 现在你可以在你的解压目录中打开你刚刚得到的makefile文件,并找到如下的几行分别修改:
[PHP]#Prefix must be a full path name
prefix=/usr/local  --->  prefix=/usr (把安装路径从/usr/local改为/usr)

#Where the zlib library and include files are located.
#.....
#.....
(看到没有“#”号打头的ZLIBLIB和ZLIBINC两行吗?)
ZLIBLIB=../zlib  --->  ZLIBLIB=/usr/lib
ZLIBINC=../zlib  --->  ZLIBINC=/usr/include
(分别把zlib的库文件和头文件指到你系统相应的库文件和头文件路径,因为你的zlib的文件就在那里。)[/PHP]
(3) make
(4) make install
(5) /sbin/ldconfig

2、安装jpeg.v6b
插语:与上面的参考链接的帖子相反,应该先安装jpeg.v6b。这是因为tiff的编译需要使用jpeg.v6b的库。
***安装步骤如下***
./configure --enable-static --enable-shared --prefix=/usr
make
make install
/sbin/ldconfig

3、安装tiff
./configure --prefix=/usr --noninteractive --mandir=/usr/share/man
make
make install
/sbin/ldconfig

***至此,只剩下最后一个gtk+2.4.x了。***;)
 楼主| 发表于 2004-12-18 14:27:26 | 显示全部楼层
第四回:--俱往矣,数风流人物还看今朝!--

1、安装gtk+2.4.x
./configure --prefix=/usr --sysconfdir=/etc
make
make install
/sbin/ldconfig

2、在 X 中试一下运行需要使用gtk+2.4.x的程序,最好是在 X 的终端下运行(例如在konsole下敲入stardict并运行)。你将会看到该程序运行的相关信息。实验表明,程序运行中无甚异常,但会有一些运行中出现错误的提示。其中你很可能会遇到error:GTK engines....。这个“gtk engines”就是提示你的gtk+2.4.x还没有安装“gtk engines”库。那它究竟在哪里呢?

3、查看你的“/usr/lib/gtk-2.0/”目录,看到你原来的2.2版本的gtk+文件夹和新装上的2.4版本的文件夹吗?进入2.2版本的目录,看到有一个名为engines 的文件夹吗?呵呵~~你再看一下2.4版本的目录下面,它有么??? 那你应该明白怎样做吧。。。复制一个不就完了?!;)

***这个方法虽然我屡试不爽,不过毕竟是不同版本的gtk+的。所以这也是我后面接着要写的“从SRPM包安装gtk+2.4.x的原因之一。***
 楼主| 发表于 2004-12-20 20:45:11 | 显示全部楼层
二、SRPM 包的安装方法
第五回:--有那么一点用处,就有那么一点意义。--

插语:前面已经介绍了使用源代码包编译的过程,但若每一次都如此重复,未免太麻烦了。能不能把它们做成属于适合自己机子的包,以后需要时就可以使用呢?当然能了! 请接着往下看。

1、准备知识
(1)  RPM 包的依赖性是一个非常棘手的问题,我们要做适合自己使用的包,那就要知道一点 RPM 包安装的顺序,否则将会出现一些意想不到的事情! :!! 那么如何知道我们打好的包安装的先后呢?有一个非常便利的方法!就是使用 urpmi 工具。(还不知道urpmi命令的使用方法?快看看fundawang老大写的“打破Debian神话之一:urpmi系列工具”吧!)一般说来,urpmi可以知道各个包之间的安装的先后关系。而我们还可以巧妙地利用 rpm -qR 命令来知道卸载的先后关系,然后,把它逆转过来,同样可以了解安装的先后。不过 rpm -qR 只提供一个大概的信息,具体安装应以 urpmi 为准。

(2)  编写 spec 文件。由于 Mandrake 提供很多源代码RPM包(*.src.rpm),里面就包含必需的spec文件,所以这一步我们可以省很多功夫,只需要我们按照自己的要求改变其中的内容。如何获得其中的spec文件呢?可使用下面的命令:
#rpm --rebuild *.src.rpm
(上面一步不是熟悉的编译RPM包的命令吗?!)
#当看到开始解开压缩包(屏幕上显示:tar -xv- )的动作时,请停止编译过程。(可使用同时按ctrlc键。)
#cd /usr/src/RPM/SPECS/
#ls
***此时,你也许会看到那些spec文件。对,我们就是要对他们做些修改。(具体的修改内容涉及spec文件的编写,有兴趣的兄弟请参考哈密瓜老大的“RPM SPEC文件编写通用规范”和probing老大的“精通RPM之--制作篇”二贴。先在此对哈兄和probing兄表示感谢!

2、编译*.src.rpm
#rpm --rebuild name.src.rpm (name 是你要编译的SRPM包的名字)
(如上面的编译过程没有出现错误的话,继续下一步。)
#cd /usr/src/RPM/RPMS/i586/
上面的路径是针对 Mandrake 默认设置来说的,由于 Mandrake 使用i586优化,所以要转到i586目录。此时,你应该看到你自己编译成功的 name.i586.rpm 包。)
#rpm -ivh --force name.i586.rpm
(之所以使用 -i 参数,是因为避免安装 gtk+2.4.x 而删除原来的 gtk+2.2 版本的某些库文件和头文件。)

***至此,我们大略知道了安装自己制作的RPM包而需要做的操作。下面我们将看看应该依什么顺序来编译和制作这些必需的包。***
 楼主| 发表于 2004-12-23 16:52:00 | 显示全部楼层
第六回:--大家好才是真的好!--
***由于网络问题,耽误了一天的时间,请大家包涵!最后一个部分来到了自己动手编译RPM包的时候了。编译的操作方法,上一回已经讲及。这里主要是安排安装的顺序。***

插语:在安装以下所有包之前,请确认你已经安装了gtk-doc这个包,因为下面的若干包在编译时候,都需要此包。若无此包的话,请务必从网络上下载,并安装之。请预先在你的机子环境变量中设置好PKG_CONFIG_PATH变量的值,设置方法和使用tar包安装的开始设置一样。在你安装好每一个编译好的RPM包之后,请执行/sbin/ldconfig命令。安装的顺序,下面已经详细写明,其中有的包可能出现冲突情况,请使用rpm -ivh --force --nodeps name.i586.rpm命令来安装。只要按照下面的顺序,操作应是无任何问题的。 :cool:

***下面开始了喔!***
1、重建并安装pkgconfig
***将得到的RPM包按以下顺序安装***
pkgconfig

2、重建并安装glib2.0
***将得到的RPM包按以下顺序安装***
libglib2.0_0,glib-gettextize,libglib2.0_0-devel

3、重建并安装atk1.0
***将得到的RPM包按以下顺序安装***
libatk1.0_0,libatk1.0_0-devel

4、重建并安装freetype
***将得到的RPM包按以下顺序安装***
freetype,freetype-devel,freetype-tools

5、重建并安装freetype2
***将得到的RPM包按以下顺序安装***
libfreetype6,libfreetype6-devel,libfreetype6-static-devel

######################################################################################
6、重建并安装fontconfig
***将得到的RPM包按以下顺序安装***
libfontconfig1,fontconfig,libfontconfig1-devel
***这里我提供了两个SRPM包,一个是原来Mandrake的SRPM包,另一个包包含wood兄提供的fonts.conf文件。若你想只使用这个fonts.conf文件,可以到网站单独下载。(详见帖子“只要几秒钟,让你的是文字体不再发虚”,感谢wood兄!),我修改了原来的spec文件而打成的SRPM包(fontconfig-2.2.1-7.sc.mdk10.src.rpm)。使用该fonts.conf文件是一个又简单又容易显效的美化方法。而且安装此包只替换你原来的fonts.conf文件(放心,你的原fonts.conf文件将以fonts.conf.save文件保存于原目录下。想要回原来的?改回名字就就可以拉!

7、重建并安装libXft
***将得到的RPM包按以下顺序安装***
libXft,libXft-devel
######################################################################################

注:fontconfig和libXft这两个包,再我后来的试验中,可以不用安装。也就是说,您可以使用原来系统自带的版本编译后续的包。但是,你应确保libfontconfig1-devel和libXft-devel的包已经安装上。

8、重建并安装pango
***将得到的RPM包按以下顺序安装***
libpango1.0_0,libpango1.0_0-modules,pango,libpango1.0_0-devel,libpango1.0_0-static-devel

9、重建并安装libpng
***将得到的RPM包按以下顺序安装***
libpng3,libpng3-devel,libpng3-static-devel

10、重建并安装libjpeg-6b
***将得到的RPM包按以下顺序安装***
libjpeg62,libjpeg62-devel,libjpeg-progs,libjpeg-static-devel

11、重建并安装libtiff
***将得到的RPM包按以下顺序安装***
libtiff3,libtiff3-devel,libtiff-progs,libtiff3-static-devel

12、重建并安装gtk+2.0
***将得到的RPM包按以下顺序安装***
libgdk_pixbuf2.0_0,gtk+2.0,libgtk+2.0_0,libgtk+-x11-2.0_0,libgdk_pixbuf2.0_0-devel,libgtk+2.0_0-devel,libgtk+2.0_0-static-devel

13、重建并安装gtk-engines2
***将得到的RPM包按以下顺序安装***
gtk-engines2
(安装好上面的包后,你将会看到省去了使用tar包安装时候要复制engines目录的烦恼。。。)

***完成之后,就请你仔细看看gtk+2.4.x的新面孔吧! :rolleyes:***

结语
    使用制作好的SRPM包的确可以免去很多重复安装步骤的烦恼,但也增添了安装时候带来的依赖顺序问题,而且使用tar包总是可以得到最新的信息。这两个方面的各有利弊,我们懂多一点,迷茫便少一点,Linux也便靠近我们一点。

(完)
 楼主| 发表于 2004-12-28 00:47:48 | 显示全部楼层
以上的SRPM包可到 http://yueru.rocklv.net/gtk_2_4_14_mdk/ 下载(顺路到版头看看MM喔!)。由于空间关系,我把它们打成了压缩包,需要的弟兄请试一下。

---------------------------------
由于网站的缘故,所有的包都已经不再提供下载了,请见到此贴的兄弟需要的话再发邮件给我或者跟贴吧。不好意思了。。。 :p
发表于 2005-2-27 18:54:53 | 显示全部楼层
求教:
我按照你的方法,在安装glib2.4.8 make时,出现了下面的错误:
Making all in po
make[2]: Entering directory `/home/mwsxh/gtk/glib-2.4.8/po'
make[2]: *** 没有规则可以创建“POTFILES”需要的目标“POTFILES.in”。 停止。
make[2]: Leaving directory `/home/mwsxh/gtk/glib-2.4.8/po'
make[1]: *** [all-recursive] 错误 1
make[1]: Leaving directory `/home/mwsxh/gtk/glib-2.4.8'
make: *** [all] 错误 2
希望你能看到这个并帮我一把
非常感谢
QQ:8110098
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-2-27 21:44:42 | 显示全部楼层
不用客气!请问你使用的是什么版本??还有,你是在root的权限下面编译和安装吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表