1. configure
# 参考README和INSTALL
# 对于大多数用automake系统的开源组件, 一般的操作如下:
./configure
#configure允许很多参数, 比如
# ./configure CC=c99 CFLAGS=-g LIBS=-lposix
# ./configure --prefix=$HOME CC=c99
# 用下面这个可以编过
./configure --prefix=$HOME CFLAGS=-std=gnu99
make
make install
2. autogen
htop出2.0版本了, 这个工具似乎已经逐渐取代top, 成为linux日常使用额必备利器. 这里记录编译htop的过程.
从git clone下来的代码, 根据readme所说, 需要这样来编译安装
./autogen.sh && ./configure && make
那么autogen里面是什么呢? 自动生成configure和Makefile又是什么原理呢?
autogen.sh
只有短短几行
$ cat autogen.sh
#!/bin/sh
mkdir -p m4
autoreconf --install --force
autoreconf的说明, 见 https://www.gnu.org/savannah-checkouts/gnu/autoconf/manual/autoconf-2.69/html_node/autoreconf-Invocation.html
autoreconf运行autoconf, autoheader, aclocal, automake, libtoolize, 和autopoint
3. 两个文件需要编辑
- configure.ac(主要被 autoconf 使用)
configure.ac 置于项目根目录 - Makefile.am(主要被 automake 使用)
Makefile.am 必须有一个放在项目根目录,可以在所有有必要的子目录下单独编写放置
Makefile.am --(automake)--> Makefile.in
Makefile.in ---(./configure)--> Makefile
4. Autotools运行流程
- 执行autoscan命令。这个命令主要用于扫描工作目录,并且生成configure.scan文件。
- 修改configure.scan为configure.ac文件,并且修改配置内容。
- 执行aclocal命令。扫描 configure.ac 文件生成 aclocal.m4文件。
- 执行autoconf命令。这个命令将 configure.ac 文件中的宏展开,生成 configure 脚本。
- 执行autoheader命令。该命令生成 config.h.in 文件。
- 新增Makefile.am文件,修改配置内容
- 执行automake --add-missing命令。该命令生成 Makefile.in 文件。
- 执行 ./congigure命令。将Makefile.in命令生成Makefile文件。
- 执行make命令。生成可执行文件。