自动化编译 如何生成configure和Makefile
在前面的标准编译安装中,第一步是./configure,它会根据Makefile.in生成Makefile文件,然后make根据Makefile自动编译软件
通常在一个源码包中,已经包含了configure脚本和Makefile文件,作为课外知识,我们大致了解一下怎么生成这两个文件
autoconf
autoconf用来生成configure脚本,它可以检查系统特性、编译环境、环境变量、软件参数、依赖关系等
autoconf需要用到 m4
- 用autoscan描源代码目录生成configure.scan文件
- 将configure.scan改名为configure.in
- 用aclocal根据configure.in文件的内容,自动生成aclocal.m4文件
- 使用autoconf,根据configure.in和aclocal.m4来产生configure文件
automake
automake可以从Makefile.am文件自动生成Makefile.in,它主要用来配置源代码
automake需用到perl
- 手工写Makefile.am
- 使用automake,根据configure.in和Makefile.am来产生Makefile.in
Makefile
使用configure脚本,配合Makefile.in可以生成Makefile文件,然后用make自动化的编译软件
这里有一张生成Makefile的流程图:
Makefile的用途不只是编译软件,还可以利用它完成一些琐碎的工作,只要最后输出一个文件,都可以用make来完成
使用 make
利用 configure所产生的Makefile文件有几个预先设定的目标可供使用:
目标 | 用途 |
---|---|
make all | 产生预设的目标,只敲入make也可以 |
make clean | 清除编译结果 |
make distclean | 除了清除编译结果,也把configure所产生的 Makefile 清除掉 |
make install | 将程序安装到系统中 |
make dist | 将程序和相关的文档打包为一个压缩文档以供发布 |
make distcheck | 打包并检验 |
详细参考
https://i.linuxtoy.org/docs/guide/ch18s05.html
emerge | USE标记
https://i.linuxtoy.org/docs/guide/ch18s07.html