Linux安装软件有一种方式就是通过源码安装,源码通常是一个压缩包,打开压缩包,经常会看到一个叫configure的文件,而不见makefile文件。通常我们在自己的电脑写应用的时候都是通过makefile来生成可执行的文件,但是为什么源码里面没有呢。实际上,编译器在开始工作前要知道当前的系统环境,比如安装的位置要在哪里、要依赖什么组件等等,由于每台电脑的环境不一样,可以通过configure配置文件指定编译参数。运行这个脚本就可以获知编译参数,编译器就可以灵活地实现针对你个人电脑的“私人定制”,这也是linux源码安装的一个优势。用户也可以自定义参数,比如假设我们要自定义安装目录,可以./configure --prefix=/usr/local/apache2。又比如假如要动态库和静态库一起编译,使用./config shared --prefix=/usr/local --openssldir=/usr/local/ssl,假如我们要加入一些模块支持(如mysql),使用
./configure --prefix=/www --with-mysql
configure通常是由autoconf这个工具生成的,下载:
sudo apt-get install autoconf
autoconf:只是autotools系列工具中的一个,运行之后可对configure.in脚本配置文件进行处理进而生成configure可执行文件,其他还包括了-----
aclocal:生成一个名称为aclocal.m4的用于处理本地宏定义的文件
autoscan:在给定目录以及其子目录树中检测源文件,若没有给定目录,就是在当前目录及其子目录树中检查。
autoheader:负责生成config.in文件,该工具通常从“acconfig.h”文件中复制用户附加的符号定义。
automake:它要用到的脚本配置文件是makefile.am,用户需要自己创建相应的文件,然后利用automake工具转换成makefile.in,此时运行configure自动配置设置文件就可将该.in文件生成makefile文件
网上摘取的一种图,解释了这套工具的工作流程:
运行autoscan,它会自动搜寻指定目录(默认是当前或者当前目录的子目录)的源文件,并且创建configure.scan文件
autoscan会尝试读入”configure.ac”(同configure.in的配置文件)文件,此时没有创建该配置文件,于是它会自动生成“configure.in”的原型文件“configure.scan”,该文件和源文件是在同一个目录下的,用户可以通过cat命令查看: