nginx-1.9.2 调试

环境

关于windwos平台的WSL(个人感觉比VM虚拟机快捷方便)的安装,自行百度,极其简单快捷方便,操作系统加上apt安装包占用盘符体积2~3G左右

windows+WSL+ubuntu20.04+clion


生成cmake文件调试

1、在auto的根目录下创建名称为cmake的文件

  1. 没有后缀,文件名就为cmake

nginx-1.9.2 调试_第1张图片
2. 内容如下

	#!/usr/bin/env bash\
	# NGX_CMAKE_FILE=$NGX_OBJS/CMakeLists.txt
	# ********此处生成到项目跟目录,修改$NGX_OBJS/CMakeLists.txt为CMakeLists.txt
	NGX_CMAKE_FILE=CMakeLists.txt
	NGX_CMAKE_TMP=$NGX_OBJS/tmp

	#output includes
	cmake_ngx_incs=`echo $CORE_INCS $NGX_OBJS $HTTP_INCS $MAIL_INCS\
				 | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g" \
					   -e "s/\//$ngx_regex_dirsep/g"`
	cat << END                                  > $NGX_CMAKE_TMP
	cmake_minimum_required(VERSION 3.6)
	include_directories(
		.
		$cmake_ngx_incs)
	END

	#output src
	cmake_ngx_src="$CORE_SRCS $HTTP_SRCS $MAIL_SRCS $NGX_MISC_SRCS $NGX_ADDON_SRCS $NGX_SHARED_SRCS"

	cmake_ngx_src=`echo $cmake_ngx_src | sed -e "s/  *\([^ ][^ ]*\)/$ngx_regex_cont\1/g"\
								 -e "s/\//$ngx_regex_dirsep/g"`

	#******** 此处将ngx_modules.c修改为$NGX_OBJS/ngx_modules.c
	cat << END                                    >> $NGX_CMAKE_TMP
	set(SOURCE_FILES
		$NGX_OBJS/ngx_modules.c
		$cmake_ngx_src)
	END

	#output target
	cat << END                                   >> $NGX_CMAKE_TMP
	add_executable(nginx \${SOURCE_FILES})
	END


	#output lib
	echo ${CORE_LIBS}
	CMAKE_CORE_LIBS=`echo ${CORE_LIBS} | sed -e "s/-l//g"`

	cat << END                                   >> $NGX_CMAKE_TMP
	target_link_libraries(nginx $CMAKE_CORE_LIBS)
	END

	if [ -f $NGX_CMAKE_TMP ]
	then
		(cat $NGX_CMAKE_TMP | sed -e "s/\\\//g") > $NGX_CMAKE_FILE
		rm $NGX_CMAKE_TMP
	fi

3、在nginx的根目录下,configure文件的末尾,加上这个生成cmake脚本的地址
nginx-1.9.2 调试_第2张图片

configure启动命令

其中–prefix指定生成路径为configure同级目录下的server目录
–add-modul 指定编译目录

	sudo ./configure -module=./src/ngx_http_myfilter_module --with-debug --with-file-aio --add-module=./src/sendfile_test --with-threads --add-module=./src/nginx-requestkey-module-master/ --with-http_secure_link_module --add-module=./src/redis2-nginx-module-master/ --prefix=./server

执行make命令

编译

	make -j8

cmake生成的路径

在构建完成后,可以在根目录下的obj/temp目录下看到cmake文件,

复制这个CMakeLists.txt 到nginx-1.9.2的根目录下

nginx-1.9.2 调试_第3张图片


安装

会生成一个目录文件,可能没有创建文件权限,所以使用sudo

nginx-1.9.2 调试_第4张图片

	sudo make install

启动

启动脚本设置,首先设置工具链为WSL
nginx-1.9.2 调试_第5张图片
接着设置启动命令
nginx-1.9.2 调试_第6张图片

最后设置运行参数,具体启动参数可以在源码中src/core/nginx.c main()启动函数 中, if (ngx_show_help) 代码内的启动参数说明
nginx-1.9.2 调试_第7张图片

	cmake -S .. -G "Unix Makefiles"
	nginx -p ./../server

CMakeLists.txt

一定要跟随步骤进行编译,不同的configure配置生成的objs/目录文件是不一样的,想要编译其他的模块,同理操作

你可能感兴趣的:(nginx,nginx,网络)