nginx源码分析
################## nginx/auto/configure########################!/bin/sh
# Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.
LC_ALL=C
export LC_ALL
#执行auto/options文件中的命令,行中的“.”表示在当前的sh环境中执行auto/options
#文件中的命令(与source命令效果一样)不同于sh命令会导致创建子进程,由于configure
#文件中命令与options的命令都在同一sh环境下,所以变量在两个文件中都是彼此可见的
. auto/options #设置变量,并将之置空
. auto/init #初始化一些变量诸如:NGX_AUTO_HEADERS_H=$NGX_OBJS/ngx_auto_headers.h
. auto/sources #设置核心模块、平台代码对应的源文件
test -d $NGX_OBJS || mkdir -p $NGX_OBJS
echo > $NGX_AUTO_HEADERS_H
echo > $NGX_AUTOCONF_ERR
echo "#define NGX_CONFIGURE \"$NGX_CONFIGURE\"" > $NGX_AUTO_CONFIG_H
if [ $NGX_DEBUG = YES ]; then
have=NGX_DEBUG . auto/have #设置NGX_DEBUG=1
fi
.....
. auto/cc/conf #检查编译器相关选项
if [ "$NGX_PLATFORM" != win32 ]; then
. auto/headers #检查相关头文件,并将结果输出到ngx_auto_headers.h文件中
fi
. auto/os/conf #检查系统平台所需的函数
if [ "$NGX_PLATFORM" != win32 ]; then
. auto/unix #检查unix环境下一些文件、函数
fi
. auto/threads
#统计要编译到nginx中的模块信息,创建并初始化ngx_module_t *ngx_modules[]和
#char *ngx_module_names[]两个数组中(这两个数组在init_cycle中被调用)存放
#到之前创建的nginx/objs/ngx_modules.c文件中
. auto/modules
. auto/lib/conf
.......
#定义变量NGX_SBIN_PATH的值为"\"$NGX_SBIN_PATH\""
have=NGX_SBIN_PATH value="\"$NGX_SBIN_PATH\"" . auto/define
have=NGX_CONF_PATH value="\"$NGX_CONF_PATH\"" . auto/define
have=NGX_PID_PATH value="\"$NGX_PID_PATH\"" . auto/define
......
页:
[1]