20309 发表于 2017-12-23 06:31:22

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]
查看完整版本: nginx源码分析