Nginx编译配置脚本篇- Makefile初始化脚本auto/init
Posted 彼方丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx编译配置脚本篇- Makefile初始化脚本auto/init相关的知识,希望对你有一定的参考价值。
nginx编译配置脚本篇(2)- 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_n
和ngx_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
,分别是default
和clean
。default
的动作是调用build
,clean
的动作是删除Makefile
文件和NGX_OBJS
参数对应的目录
cat << END > Makefile
default: build
clean:
rm -rf Makefile $NGX_OBJS
END
3、总结
通过运行auto/init
脚本,我们配置了后续编译代码所需要用到的几个重要文件的路径,比如objs/Makefile
、ngx_modules.c
等等,并在最后生成了Makefile
文件(这个是根目录的Makefile
,不要和前面那个objs/
目录下的Makefile
混淆了)。
以上是关于Nginx编译配置脚本篇- Makefile初始化脚本auto/init的主要内容,如果未能解决你的问题,请参考以下文章
Nginx配置编译脚本篇- 解析配置选项脚本auto/options