编译安装
为什么要编译安装
- 包管理系统是绝大多数发行版的必备组件,也是一个发行版区别于其它发行版的主要特征。但是有些软件,并不能通过包管理系统安装,这就需要下载源码编译安装。
- 一个软件可能有许多功能,但是发行版中提供的安装包,通常只具有一些常见的功能。如果提供所有功能,那么无疑会占用更多的资源,而这些功能,大多数用户不会用到;而你会用到的功能,可能安装包中刚好没有。编译安装可以灵活地定制软件,选择自己需要的,取消自己不需要的。
- 编译安装还可以针对特定的硬件进行优化,以获得更好的性能表现。
编译环境
编译环境包括多个工具,它们环环相扣,称作编译工具链。主要包括以下工具:
工具 简介 binutils 连接器、汇编器和其他用于目标文件和档案的工具 gcc 编译器,将源代码转换为机器代码 glibc C库,提供标准例程(C函数) 还有一些工具,能够调用工具链,实现自动化编译:
工具 简介 autoconf 自动生成 Makefile 文件 automake make 按照 Makefile 文件中的规则编译程序
标准编译安装
首先,下载源代码,通常是压缩包,如:xxx.tar.gz 或者 xxx.tar.bz2,解包:
压缩包格式 | 解压命令 |
---|---|
.tar.gz | tar -zxvf xxx |
.tgz | |
.tar.bz2 | tar jxvf xxx |
源码包解压后,进入解压后的文件夹下,使用下列命令编译安装:
./configure #配置软件特性, 检查编译环境,生成 Makefile文件
--prefix=/path/to #最常用配置选项: 指定软件的安装路径
make #根据 Makefile 编译源代码
sudo make install #将编译完成的程序安装到系统中, 通常需要 root权限
make clean #清除源代码目录中的编译结果
自动化编译安装
在前面的标准编译安装中,第一步是./configure,它会根据Makefile.in生成Makefile文件,然后make根据Makefile自动编译软件。通常在一个源码包中,已经包含了configure脚本和Makefile文件,作为课外知识,我们大致了解一下怎么生成这两个文件。
生成Makefile
上面的表格中也提到,生成Makefile需要使用autoconf和automake工具。
autoconf
用来生成configure脚本,它可以检查系统特性、编译环境、环境变量、软件参数、依赖关系等。autoconf需要用到 m4。
- 用autoscan描源代码目录生成configure.scan文件
- 将configure.scan改名为configure.in
- 用aclocal根据configure.in文件的内容,自动生成aclocal.m4文件
- 使用autoconf,根据configure.in和aclocal.m4来产生configure文件
automake
可以从Makefile.am文件自动生成Makefile.in,它主要用来配置源代码。automake需用到perl。
- 手工写Makefile.am
- 使用automake,根据configure.in和Makefile.am来产生Makefile.in
- 使用
configure
脚本,配合Makefile.in可以生成Makefile文件,然后用make自动化的编译软件
使用make命令安装
通过make和make install命令安装。
- make是用来编译的,它从Makefile中读取指令,然后编译。
- make install是用来安装的,它也从Makefile中读取指令,安装到指定的位置。
make常用命令列表:
命令 | 作用 |
---|---|
make install | 将程序安装到系统中 |
make all | 产生预设的目标,只敲入make也可以 |
make clean | 清除编译结果 |
make distclean | 除了清除编译结果,也把configure所产生的 Makefile 清除掉 |
make dist | 将程序和相关的文档打包为一个压缩文档以供发布 |
make distcheck | 打包并检验 |
本篇文章参考了: https://blog.csdn.net/chudongfang2015/article/details/51863986