绝世秘籍之GNU构建系统与Autotool概念分析
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 为了简化可移植构建的难度,在早期有一套autotools工具帮助程序员构建软件。我们熟知的configure->make->make install三部曲,大多都是基于autotools来构建的。autotools是GNU程序的标准构建系统,所以其实我们经常在使用三部曲。有些程序虽然也是这三部曲,但却不是用autotools实现的,比如nginx的源码就是作者自己编写的构建程序。 用户视角 用户通过configure->make->make install基于源码安装软件。然而大部分用户可能并不知道这个过程究竟做了些什么。 configure脚本是由软件开发者维护并发布给用户使用的shell脚本。这个脚本的作用是检测系统环境,最终目的是生成Makefile和config.h。 make通过读取Makefile文件,开始构建软件。而make install可以将软件安装到需要安装的位置。 如上图,开发者在分发源码包时,除了源代码(.c .h…),还有许多用以支撑软件构建的文件和工具,其中最重要的文件就是Makefile.in和config.h.in。configure脚本执行成功后,将为每一个*.in文件处理成对应的非*.in文件。 大部分情况只生成Makefile和config.h