包管理系统是绝大多数发行版的必备组件,也是一个发行版区别于其它发行版的主要特征。但是有些软件,并不能通过包管理系统安装,这就需要下载源码编译安装。
一个软件可能有许多功能,但是发行版中提供的安装包,通常只具有一些常见的功能。如果提供所有功能,那么无疑会占用更多的资源,而这些功能,大多数用户不会用到;[24]而你会用到的功能,可能安装包中刚好没有。编译安装可以灵活地定制软件,选择自己需要的,取消自己不需要的。
编译安装还可以针对特定的硬件进行优化,以获得更好的性能表现。[25]
编译环境包括多个工具,它们环环相扣,称作编译工具链。主要包括以下工具:
工具 | 简介 |
---|---|
binutils | 连接器、汇编器和其他用于目标文件和档案的工具 |
gcc | 编译器,将源代码转换为机器代码 |
glibc | C库,提供标准例程(C函数) |
还有一些工具,能够调用工具链,实现自动化编译:
autoconf | 自动生成 Makefile 文件 |
automake | |
make | 按照 Makefile 文件中的规则编译程序 |
在后面的部分将分别介绍这些工具