标准编译安装

为什么要编译安装

包管理系统是绝大多数发行版的必备组件,也是一个发行版区别于其它发行版的主要特征。但是有些软件,并不能通过包管理系统安装,这就需要下载源码编译安装。

一个软件可能有许多功能,但是发行版中提供的安装包,通常只具有一些常见的功能。如果提供所有功能,那么无疑会占用更多的资源,而这些功能,大多数用户不会用到;[24]而你会用到的功能,可能安装包中刚好没有。编译安装可以灵活地定制软件,选择自己需要的,取消自己不需要的。

编译安装还可以针对特定的硬件进行优化,以获得更好的性能表现。[25]

编译环境

编译环境包括多个工具,它们环环相扣,称作编译工具链。主要包括以下工具:

工具简介
binutils连接器、汇编器和其他用于目标文件和档案的工具
gcc编译器,将源代码转换为机器代码
glibcC库,提供标准例程(C函数)

还有一些工具,能够调用工具链,实现自动化编译:

autoconf自动生成 Makefile 文件
automake
make按照 Makefile 文件中的规则编译程序

在后面的部分将分别介绍这些工具

标准编译安装

首先,下载源代码,通常是压缩包,如:xxx.tar.gz 或者 xxx.tar.bz2,解包:

压缩包格式命令
.tar.gztar zxvf xxx.tgz
.tgz
.tar.bz2tar jxvf xxx.tar.bz2

通常解包后会在当前位置得到一个 xxx/ 目录,进入这个目录

  1. cd xxx/

使用下列命令编译安装:

  1. ./configure --prefix=/opt/xxx
  2. make
  3. sudo make install
  4. make clean

1

配置软件特性,检查编译环境,生成 Makefile文件

2

最常用配置选项:指定软件的安装路径

3

根据 Makefile 编译源代码

4

将编译完成的程序安装到系统中。通常需要 root权限

5

清除源代码目录中的编译结果

[24] Windows 系统下的一些经典软件,如 ACDsee、Nero、Winamp 等,集成了越来越多的功能,使它们越来越臃肿。而且不能够只选择自己喜欢的功能,要么全盘接收,要么改寻它途

[25] 通常发行版提供的安装包,已经进行了优化。自己编译的软件,性能未必更好