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

从上一篇文章我们可以知道,NGX_OBJS的值是在auto/options文件中设置的,且默认值为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混淆了)。

  • 17
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彼 方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值