我们晓得configure命令支持非常多的参数,读者可能会好奇它在执行时到底做了那些事情,接下来通过解析configure源码来对它有一个感性的认识。
configure由shell脚本编写,中间会调用<nginx-dource>/auto/目录下的脚本。这里我们只对configure脚本本身做法纳西,对于它所调用的auto目录下的其他工具脚本则只做功能性的说明。
#!/bin/sh
# Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
LC_ALL=C
export LC_ALL
#auto/options脚本处理configure命令的参数。例如,如果参数时--help,那么显示支持所有参数格式。options脚本会定义后续工作将要用到的变量,然后根据本次参数及默认值设置这些变量。
. auto/options
#auto/init脚本初始化后需将产生的文件路径。例如:Makefile ngx_modules.c等文件默认情况下将会在<nginx-source>/objes/
. auto/init
#auto/sources脚本将分析nginx的源码结构,这样才能构造后续的Makefile文件
. auto/sources
#编译过程中所有的目标文件生成的路径由-builddir=DIR参数指定,默认情况下为<nginx-source>/objs,此时这个目录将会被创建
test -d $NGX_OBJS || mkdir -p $NGX_OBJS
#开始准备建立ngx_auth_headers.h 、 autoconf.err等必要的编译文件
echo > $NGX_AUTO_HEADERS_H
echo > $NGX_AUTOCONF_ERR
#向objs/ngx_auto_config.h写入命令行带的参数
echo "#define NGX_CONFIGURE \"$NG