目的:安装Gaim
环境:已经安装了Linux Kernel的机器。gnu编译环境已经设定好。wget可用。
要求:不使用已编译安装包。(模拟在全新CPU构架的计算机上安装的过程)
步骤:
基本思路非常简单,由于gnu编译工具链已经就位,只要用wget获取Gaim源代码进行编译安装即可。
但是,最大的问题是Gaim的源代码依存于gtk+,而gtk+又是依存于一些列GNU/non-GNU工具包的。因此首先必须找出所有的软件包依存关系。
找依存关系有两个办法,一个是看文档,这个比较清楚而且简单精确。在文档可用的时候强烈推荐;
还有一个就是不管三七二十一先试着编译,然后看出错信息。这个比较麻烦,对技术要求也高,一般不推荐。
这里我尝试着安装的是Gaim1.5.0,选择的GTK+是此时最新的2.8.2。
由于只有Linux内核,离图形界面差了一大截,gnu软件中间的版本问题又比较复杂,整个摸索过程耗了我3整天。不过通过这个过程,对Linux的命令以及GNU的构架又熟悉了不少,也不算冤枉。
虽然软件间的关系是随版本变化的,但是也有一定的规律。3天的经验如果不写下来,没多久也就忘记了,那就是在浪费生命了。
根据实测,源代码间的依存关系如下:(在上述版本的条件下)(编译顺序为自下而上,从左到右)
Gaim
|
GTK+
|
+—————————————————-
| | | | | | | |
atk expat cairo——>pango libjpeg tiff libpng X
| |
+——– ——————–+
| | | | |
bison fliex ncurses fontconfig->freetype
这里主要有两个要点,一个是X系统,虽然GTK+的资料说X系统并不是必要的,但是实际编译的时候,很多软件包里都有依存于X系统的部分。没有似乎编译通不过。X系统中字库部分编译时间非常长,在P4数量级的机器上也耗时1小时以上,这一点需要注意的。
此外,X系统的源代码树中虽然有fontconfig和freetype,但是fontconfig会在freetype前编译。而fontconfig需要使用freetype的库,因此在系统事先未安装freetype的情况下,需要手工先编译freetype并进行安装,这样X的编译才能顺利通过。
tiff和libpng在X的编译过程中要用到,需要在X之前编译安装好。
没有cario pango一样可以编译,但是编译出来的东西GTK+不接受。一定要先编译cario安装再编译pango,这样pango里cario相关的代码就会生效,编译出来的模块才会被GTK+接受。
libjpeg的编译比较简单,不过./configure后面一定要带上参数,否则不会有静态库和动态库被编译出来,GTK+的./configure会出错。
所有的模块在编译后都需要安装。