Nginx编译配置脚本篇(2)- Makefile初始化脚本auto/init

Nginx编译配置脚本篇(2)- Makefile初始化脚本auto/init

  • 1、相关文章
  • 2、前言
  • 3、auto/init文件内容详解
    • 2.1、Makefile文件路径设置
    • 2.2、模块文件路径设置
    • 2.3、头文件路径设置
    • 2.4、自动测试文件路径和配置错误文件路径设置
    • 2.5、STUBS相关文件路径设置
    • 2.6、PCH相关文件路径设置
    • 2.7、测试所在环境的"\c"和"-n"
    • 2.8、创建Makefile文件并写入部分内容
  • 3、总结

1、相关文章

由于学习本文需要Nginx源码及搭建相关的编译环境,且本文与前面的文章有先后呼应关系,所以建议大家按以下文章顺序阅读

  • CentOS 7使用源码编译安装Nginx,以及配置使用autoindex模块
  • Nginx配置编译脚本篇(1)- 解析配置选项脚本auto/options

2、前言

configure运行完auto/options脚本后,接着就是运行auto/init脚本了,接下来介绍auto/init里面的内容
configure文件将在最后一篇关于Nginx脚本配置文件的文章中讲解)

3、auto/init文件内容详解

2.1、Makefile文件路径设置

代码如下:

NGX_MAKEFILE=$NGX_OBJS/Makefile

auto/options文件可以看出NGX_MAKEFILE的值默认为objs,则上述代码变为NGX_MAKEFILE=objs/Makefile

2.2、模块文件路径设置

代码如下:

NGX_MODULES_C=$NGX_OBJS/ngx_modules.c

同理,默认展开为NGX_MODULES_C=objs/ngx_modules.c。最终生成的这个文件非常重要,我们引入的模块都必须在这个文件有定义才行,建议大家每次重新配置之后,检查这个文件看看自己设置的模块有没有被添加进去。

2.3、头文件路径设置

里面定义一些相关的宏啥的,和前面类似,这里就不讲了,代码如下:

NGX_AUTO_HEADERS_H=$NGX_OBJS/ngx_auto_headers.h
NGX_AUTO_CONFIG_H=$NGX_OBJS/ngx_auto_config.h

2.4、自动测试文件路径和配置错误文件路径设置

代码如下:

NGX_AUTOTEST=$NGX_OBJS/autotest
NGX_AUTOCONF_ERR=$NGX_OBJS/autoconf.err

2.5、STUBS相关文件路径设置

代码如下:

# STUBs
NGX_ERR=$NGX_OBJS/autoconf.err
MAKEFILE=$NGX_OBJS/Makefile

2.6、PCH相关文件路径设置

代码如下:

NGX_PCH=
NGX_USE_PCH=

2.7、测试所在环境的"\c"和"-n"

测试所在环境下\c-n的支持与否,并定义了两个变量ngx_nngx_c,代码如下:

if echo "test\c" | grep c >/dev/null; then

    if echo -n test | grep n >/dev/null; then
        ngx_n=
        ngx_c=

    else
        ngx_n=-n
        ngx_c=
    fi

else
    ngx_n=
    ngx_c='\c'
fi

2.8、创建Makefile文件并写入部分内容

代码如下,可以看到往Makefile里面写入了两个targets,分别是defaultcleandefault的动作是调用buildclean的动作是删除Makefile文件和NGX_OBJS参数对应的目录

cat << END > Makefile

default:	build

clean:
	rm -rf Makefile $NGX_OBJS
END

3、总结

通过运行auto/init脚本,我们配置了后续编译代码所需要用到的几个重要文件的路径,比如objs/Makefilengx_modules.c等等,并在最后生成了Makefile文件(这个是根目录的Makefile,不要和前面那个objs/目录下的Makefile混淆了)。

你可能感兴趣的:(Nginx技术研究,nginx,linux)