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

Posted 彼方丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx编译配置脚本篇- Makefile初始化脚本auto/init相关的知识,希望对你有一定的参考价值。

1、相关文章

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

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编译配置脚本篇- Makefile初始化脚本auto/init的主要内容,如果未能解决你的问题,请参考以下文章

Nginx编译配置脚本篇- 工具型脚本系列

Nginx配置编译脚本篇- 解析配置选项脚本auto/options

Nginx编译配置脚本篇- 编译器相关脚本

Nginx编译配置脚本篇- 动态库配置脚本auto/lib/conf

Nginx编译配置脚本最终篇 - configure脚本

Nginx编译配置脚本篇- 系统环境相关脚本