Nginx编译配置脚本篇- 源码相关变量脚本auto/sources
Posted 彼方丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx编译配置脚本篇- 源码相关变量脚本auto/sources相关的知识,希望对你有一定的参考价值。
nginx编译配置脚本篇(3)- 源码相关变量脚本auto/sources
1、相关文章
由于学习本文需要Nginx
源码及搭建相关的编译环境,且本文与前面的文章有先后呼应关系,所以建议大家按以下文章顺序阅读
- CentOS 7使用源码编译安装Nginx,以及配置使用autoindex模块
- Nginx配置编译脚本篇(1)- 解析配置选项脚本auto/options
- Nginx编译配置脚本篇(2)- Makefile初始化脚本auto/init
2、前言
在configure
运行完auto/init
脚本后,接着就是运行auto/sources
脚本了,这个脚本是objs/Makefile
文件里的重要组成部分,接下来介绍auto/sources
里面的内容
(configure
文件将在最后一篇关于Nginx
脚本配置文件的文章中讲解)
3、auto/sources文件内容详解
3.1、核心模块
3.1.1、核心模块名称(CORE_MODULES)
CORE_MODULES
变量存储了Nginx
的核心模块,默认有ngx_core_module
、ngx_errlog_module
和ngx_conf_module
,代码如下:
CORE_MODULES="ngx_core_module ngx_errlog_module ngx_conf_module"
3.1.2、核心模块头文件所在目录(CORE_INCS)
这个变量存储了Nginx
核心模块头文件的所在目录,如果读者有了解过gcc
编译规则的话,可以很容易猜到这是给后续编写Makefile
时指定头文件查找目录用的,比如-I src/core
表示先去src/core
目录查找头文件。代码如下:
CORE_INCS="src/core"
3.1.3、核心模块头文件(CORE_DEPS)
这个变量存储了Nginx
核心模块头文件的路径(相对路径),代码如下(有所省略):
CORE_DEPS="src/core/nginx.h \\
src/core/ngx_config.h \\
src/core/ngx_core.h \\
...
src/core/ngx_syslog.h"
3.1.4、核心模块源文件(CORE_SRCS)
这个变量存储了Nginx
核心模块源文件的路径(相对路径),代码如下(有所省略):
CORE_SRCS="src/core/nginx.c \\
src/core/ngx_log.c \\
src/core/ngx_palloc.c \\
...
src/core/ngx_syslog.c"
3.2、事件模块
3.2.1、事件模块名称(EVENT_MODULES)
EVENT_MODULES
变量存储了Nginx
的事件模块,默认有ngx_events_module
和ngx_event_core_module
,代码如下:
EVENT_MODULES="ngx_events_module ngx_event_core_module"
3.2.2、事件模块头文件所在目录(EVENT_INCS)
这个变量存储了Nginx
事件模块头文件的所在目录,代码如下:
EVENT_INCS="src/event src/event/modules"
3.2.3、事件模块头文件(EVENT_DEPS)
这个变量存储了Nginx
事件模块头文件的路径(相对路径),代码如下:
EVENT_DEPS="src/event/ngx_event.h \\
src/event/ngx_event_timer.h \\
src/event/ngx_event_posted.h \\
src/event/ngx_event_connect.h \\
src/event/ngx_event_pipe.h"
3.2.4、事件模块源文件(CORE_SRCS)
这个变量存储了Nginx
事件模块源文件的路径(相对路径),代码如下:
EVENT_SRCS="src/event/ngx_event.c \\
src/event/ngx_event_timer.c \\
src/event/ngx_event_posted.c \\
src/event/ngx_event_accept.c \\
src/event/ngx_event_udp.c \\
src/event/ngx_event_connect.c \\
src/event/ngx_event_pipe.c"
3.3、事件驱动模块
Nginx
事件驱动模型包括select
、poll
、kqueue
、devpoll
、eventport
、epoll
、iocp
、aio
。本文不讨论这些事件驱动模型的原理和异同。
3.3.1、select模块
SELECT_MODULE=ngx_select_module
SELECT_SRCS=src/event/modules/ngx_select_module.c
WIN32_SELECT_SRCS=src/event/modules/ngx_win32_select_module.c
3.3.2、poll模块
POLL_MODULE=ngx_poll_module
POLL_SRCS=src/event/modules/ngx_poll_module.c
WIN32_POLL_SRCS=src/event/modules/ngx_win32_poll_module.c
3.3.3、kqueue模块
KQUEUE_MODULE=ngx_kqueue_module
KQUEUE_SRCS=src/event/modules/ngx_kqueue_module.c
3.3.4、devpoll模块
DEVPOLL_MODULE=ngx_devpoll_module
DEVPOLL_SRCS=src/event/modules/ngx_devpoll_module.c
3.3.5、eventport模块
EVENTPORT_MODULE=ngx_eventport_module
EVENTPORT_SRCS=src/event/modules/ngx_eventport_module.c
3.3.6、epoll模块
EPOLL_MODULE=ngx_epoll_module
EPOLL_SRCS=src/event/modules/ngx_epoll_module.c
3.3.7、iocp模块
IOCP_MODULE=ngx_iocp_module
IOCP_SRCS=src/event/modules/ngx_iocp_module.c
3.3.8、aio模块
FILE_AIO_SRCS="src/os/unix/ngx_file_aio_read.c"
LINUX_AIO_SRCS="src/os/unix/ngx_linux_aio_read.c"
3.4、操作系统相关项
3.4.1、UNIX相关
- 头文件所在目录(UNIX_INCS)
UNIX_INCS="$CORE_INCS $EVENT_INCS src/os/unix"
- 头文件(UNIX_DEPS)
UNIX_DEPS="$CORE_DEPS $EVENT_DEPS \\
src/os/unix/ngx_time.h \\
src/os/unix/ngx_errno.h \\
...
src/os/unix/ngx_process_cycle.h"
- 源文件(UNIX_SRCS)
UNIX_SRCS="$CORE_SRCS $EVENT_SRCS \\
src/os/unix/ngx_time.c \\
src/os/unix/ngx_errno.c \\
...
src/os/unix/ngx_process_cycle.c"
3.4.2、POSIX相关
- 头文件(POSIX_DEPS)
POSIX_DEPS=src/os/unix/ngx_posix_config.h
3.4.3、线程池相关
- 模块(THREAD_POOL_MODULE)
THREAD_POOL_MODULE=ngx_thread_pool_module
- 头文件(THREAD_POOL_DEPS)
THREAD_POOL_DEPS=src/core/ngx_thread_pool.h
- 源文件(THREAD_POOL_SRCS)
THREAD_POOL_SRCS="src/core/ngx_thread_pool.c
src/os/unix/ngx_thread_cond.c
src/os/unix/ngx_thread_mutex.c
src/os/unix/ngx_thread_id.c"
3.4.4、FreeBSD相关
- 头文件(FREEBSD_DEPS)
FREEBSD_DEPS="src/os/unix/ngx_freebsd_config.h src/os/unix/ngx_freebsd.h"
- 源文件(FREEBSD_SRCS)
FREEBSD_SRCS=src/os/unix/ngx_freebsd_init.c
- 有关sendfile机制的源文件(FREEBSD_SENDFILE_SRCS)
FREEBSD_SENDFILE_SRCS=src/os/unix/ngx_freebsd_sendfile_chain.c
3.4.5、Linux相关
- 头文件(LINUX_DEPS)
LINUX_DEPS="src/os/unix/ngx_linux_config.h src/os/unix/ngx_linux.h"
- 源文件(LINUX_SRCS)
LINUX_SRCS=src/os/unix/ngx_linux_init.c
- 有关sendfile机制的源文件(LINUX_SENDFILE_SRCS)
LINUX_SENDFILE_SRCS=src/os/unix/ngx_linux_sendfile_chain.c
3.4.6、Solaris相关
- 头文件(SOLARIS_DEPS)
SOLARIS_DEPS="src/os/unix/ngx_solaris_config.h src/os/unix/ngx_solaris.h"
- 源文件(SOLARIS_SRCS)
SOLARIS_SRCS=src/os/unix/ngx_solaris_init.c
- 有关sendfile机制的源文件(SOLARIS_SENDFILEV_SRCS)
SOLARIS_SENDFILEV_SRCS=src/os/unix/ngx_solaris_sendfilev_chain.c
3.4.7、Darwin相关
- 头文件(DARWIN_DEPS)
DARWIN_DEPS="src/os/unix/ngx_darwin_config.h src/os/unix/ngx_darwin.h"
- 源文件(DARWIN_SRCS)
DARWIN_SRCS=src/os/unix/ngx_darwin_init.c
- 有关sendfile机制的源文件(DARWIN_SENDFILE_SRCS)
DARWIN_SENDFILE_SRCS=src/os/unix/ngx_darwin_sendfile_chain.c
3.4.8、Win32相关
- 头文件所在目录(WIN32_INCS)
WIN32_INCS="$CORE_INCS $EVENT_INCS src/os/win32"
- 头文件(WIN32_DEPS)
WIN32_DEPS="$CORE_DEPS $EVENT_DEPS \\
src/os/win32/ngx_win32_config.h \\
src/os/win32/ngx_time.h \\
...
src/os/win32/ngx_process_cycle.h"
- 配置相关头文件(WIN32_CONFIG)
WIN32_CONFIG=src/os/win32/ngx_win32_config.h
- 源文件(WIN32_SRCS)
WIN32_SRCS="$CORE_SRCS $EVENT_SRCS \\
src/os/win32/ngx_errno.c \\
src/os/win32/ngx_alloc.c \\
...
src/event/ngx_event_acceptex.c"
- Nginx用于Win32的图标文件(NGX_WIN32_ICONS)
NGX_WIN32_ICONS="src/os/win32/nginx.ico"
- Run Commands相关(NGX_WIN32_RC)
NGX_WIN32_RC="src/os/win32/nginx.rc"
3.5、HTTP相关
- HTTp文件处理核心源文件(HTTP_FILE_CACHE_SRCS)
HTTP_FILE_CACHE_SRCS=src/http/ngx_http_file_cache.c
4、总结
auto/sources
脚本的内容是objs/Makefile
的重要组成部分,通过运行auto/sources
脚本,我们将源代码文件相关内容给写入原封不动写入到了configure
文件中,目前看不出来在哪里使用,后续的文章会再进一步地进行分析。
以上是关于Nginx编译配置脚本篇- 源码相关变量脚本auto/sources的主要内容,如果未能解决你的问题,请参考以下文章
Nginx编译配置脚本篇- 动态库配置脚本auto/lib/conf