标准编译安装
为什么要编译安装
包管理系统是绝大多数发行版的必备组件,也是一个发行版区别于其它发行版的主要特征。但是有些软件,并不能通过包管理系统安装,这就需要下载源码编译安装。
一个软件可能有许多功能,但是发行版中提供的安装包,通常只具有一些常见的功能。如果提供所有功能,那么无疑会占用更多的资源,而这些功能,大多数用户不会用到;[24]而你会用到的功能,可能安装包中刚好没有。编译安装可以灵活地定制软件,选择自己需要的,取消自己不需要的。
编译安装还可以针对特定的硬件进行优化,以获得更好的性能表现。[25]
编译环境
编译环境包括多个工具,它们环环相扣,称作编译工具链。主要包括以下工具:
工具 | 简介 |
---|---|
binutils | 连接器、汇编器和其他用于目标文件和档案的工具 |
gcc | 编译器,将源代码转换为机器代码 |
glibc | C库,提供标准例程(C函数) |
还有一些工具,能够调用工具链,实现自动化编译:
autoconf | 自动生成 Makefile 文件 |
automake | |
make | 按照 Makefile 文件中的规则编译程序 |
在后面的部分将分别介绍这些工具
标准编译安装
首先,下载源代码,通常是压缩包,如:xxx.tar.gz
或者 xxx.tar.bz2
,解包:
压缩包格式 | 命令 |
---|---|
.tar.gz | tar zxvf xxx.tgz |
.tgz | |
.tar.bz2 | tar jxvf xxx.tar.bz2 |
通常解包后会在当前位置得到一个 xxx/
目录,进入这个目录
cd xxx/
使用下列命令编译安装:
./configure --prefix=/opt/xxx
make
sudo make install
make clean
配置软件特性,检查编译环境,生成 Makefile文件 | |
最常用配置选项:指定软件的安装路径 | |
根据 Makefile 编译源代码 | |
将编译完成的程序安装到系统中。通常需要 root权限 | |
清除源代码目录中的编译结果 |
[24] Windows 系统下的一些经典软件,如 ACDsee、Nero、Winamp 等,集成了越来越多的功能,使它们越来越臃肿。而且不能够只选择自己喜欢的功能,要么全盘接收,要么改寻它途
[25] 通常发行版提供的安装包,已经进行了优化。自己编译的软件,性能未必更好