当前位置: 首页 > wzjs >正文

广州网站搭建多少钱如何提升百度关键词排名

广州网站搭建多少钱,如何提升百度关键词排名,个人设计师接单平台,广州专业的做网站公司为了研究nginx源码,笔者想编译调试一下nginx源码,由于nginx是使用configure脚本方式生成Makefile来编译的,MinGW中理论上也是可以的,但是直接在MinGW中编译nginx源码会出现找不到PCRE库以及zlib库的问题: 实际上MinGW中…

为了研究nginx源码,笔者想编译调试一下nginx源码,由于nginx是使用configure脚本方式生成Makefile来编译的,MinGW中理论上也是可以的,但是直接在MinGW中编译nginx源码会出现找不到PCRE库以及zlib库的问题:

在这里插入图片描述

在这里插入图片描述
实际上MinGW中是有安装这两个库的:

在这里插入图片描述
在这里插入图片描述

在Linux下如果安装了这两个库,在运行auto/configure时,是完全没问题的,能够正确找到这两个库:
在这里插入图片描述

笔者经过研究,发现在查找PCRE库以及zlib库的脚本中都只对非win32平台进行了检测,win32平台没做检测。可以参见目前最新稳定版本nginx 1.26的源码,PCRE配置以及zlib配置。

只需要把条件判定去掉即可:

在这里插入图片描述

在这里插入图片描述

再运行:

 auto/configure --prefix= --with-cc=clang

在这里插入图片描述

如果要启用https,需要添加参数:--with-http_ssl_module,在MinGW中编译同样需要注释掉判断条件

如果要调试添加参数:--with-debug

在这里插入图片描述

生成好Makefile之后,就可以编译了:

make -j8

可以使用VSCode进行调试,以下是笔者的launch.json

{// 使用 IntelliSense 了解相关属性。// 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"type": "lldb","request": "launch","name": "(lldb) 启动","program": "${workspaceFolder}/objs/nginx.exe","args": [],"cwd": "${workspaceFolder}","env": {"PATH": "G:\\msys64\\mingw64\\bin"}},{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${workspaceFolder}/objs/nginx.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "G:\\msys64\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"windows": {"environment": [{"name": "PATH","value": "G:\\msys64\\mingw64\\bin"}]}}]
}

需要注意的是,由于nginx默认是使用的多进程模式,如果直接调试,将无法调试工作进程的情况,为此需要在调试时改为单进程的运行方式,修改nginx.c:1143为:

ngx_conf_init_value(ccf->daemon, 0)
ngx_conf_init_value(ccf->master, 0);

重新编译后,即可使用GDB或者LLDB调试了:

在这里插入图片描述

目前虽然可以调试了,但是看代码,是没有intellisense的,也就不能正常代码跳转。所以最好是改为能够使用CMake构建系统,这样就可以使用clangd分析代码,进行代码跳转了。笔者根据源码中的脚本,写了一份可以在MinGW中使用的CMakeLists.txt,不过还是需要先在MinGW中执行auto/configure脚本。

CMakeLists.txt

cmake_minimum_required(VERSION 3.20)project(nginx)if(WIN32)
if(MSVC)
message(FATAL_ERROR "WIN32下不支持使用MSVC编译,仅支持MinGW或者Cygwin环境下使用gcc或者clang编译器编译")
endif()
endif()if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/objs/ngx_auto_config.h)
message(STATUS "不存在ngx_auto_config.h,需要先执行`auto/configure`脚本")
endif()if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/objs/ngx_auto_headers.h)
message(STATUS "ngx_auto_headers.h,需要先执行`auto/configure`脚本")
endif()if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/objs/ngx_modules.c)
message(STATUS "不存在ngx_modules.c,需要先执行`auto/configure`脚本")
endif()aux_source_directory(src/core SRC_LIST)
aux_source_directory(src/event SRC_LIST)
if(WIN32)
aux_source_directory(src/os/win32 SRC_LIST)
else()
aux_source_directory(src/os/unix SRC_LIST)
endif()
aux_source_directory(src/http SRC_LIST)
aux_source_directory(src/http/modules SRC_LIST)list(REMOVE_ITEM SRC_LIST src/core/ngx_bpf.c)
list(APPEND SRC_LIST objs/ngx_modules.c)if(WIN32)
list(APPEND SRC_LIST src/event/modules/ngx_win32_poll_module.c)
list(APPEND SRC_LIST src/event/modules/ngx_iocp_module.c)
list(APPEND SRC_LIST src/event/modules/ngx_win32_select_module.c)list(REMOVE_ITEM SRC_LIST src/core/ngx_thread_pool.c)
list(REMOVE_ITEM SRC_LIST src/os/win32/ngx_service.c)
list(REMOVE_ITEM SRC_LIST src/event/ngx_event_connectex.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_degradation_module.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_dav_module.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_realip_module.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_geoip_module.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_xslt_filter_module.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_stub_status_module.c)
list(REMOVE_ITEM SRC_LIST src/http/modules/ngx_http_grpc_module.c)
endif()add_executable(${PROJECT_NAME} ${SRC_LIST})include_directories(src/coresrc/eventsrc/event/modulessrc/httpsrc/http/modulessrc/mailobjs
)if(WIN32)
include_directories(src/os/win32)
else()
include_directories(src/os/unix)
endif()target_link_libraries(${PROJECT_NAME} PUBLIC advapi32 pcre crypto libz ws2_32 pcre2-8 ssl gd)

如果对你有帮助,欢迎点赞收藏!

http://www.dtcms.com/wzjs/69245.html

相关文章:

  • 合肥市城乡建设委员网站湛江百度seo公司
  • 网站制作和app制作软文发布的平台与板块
  • 网站页面用什么软件做微博营销策略
  • wordpress menu css标题优化
  • wordpress安装主题失败广州网页seo排名
  • 一般网站的宽度是多少上海seo推广方法
  • 网站做前端营销策划公司的经营范围
  • 企业网站建站 合肥百度信息流推广和搜索推广
  • 网站推广要怎样做网络营销常用的工具有哪些
  • 重庆多语网站建设品牌企业宣传网站怎么做
  • 做美食网站的意义网站怎么优化排名
  • 猪八戒网做动漫弹幕网站关键词竞价排名名词解释
  • 做访问的公司网站近期舆情热点事件
  • 网页设计与制作教程 机械工业出版社苏州首页排名关键词优化
  • ai绘制logo标题优化方法
  • 工程网站怎么做如何优化百度seo排名
  • 怎么在网上做客服更先进的seo服务
  • 口碑营销的定义技术教程优化搜索引擎整站
  • 如何推广qq群免费seo优化工具
  • 网站建设方案书一定要有吗惠州seo公司
  • hugo 怎么做网站googlechrome
  • 济宁网站建设专业定制巩义网站优化公司
  • 淄博企业做网站简单的网页设计源代码
  • 做鞋子网站的域名别人恶意点击我们竞价网站
  • 网站建设需要集齐哪5份资料优化大师怎么卸载
  • 新手学做网站 pdf 下载衡阳seo优化报价
  • 福州哪家企业网站建设设计最高端宁波seo优化排名
  • 深圳购物网站建设公司深圳seo优化外包
  • 中国十大网络科技公司seo自学
  • 怎么制作网站网页网络营销策划书的结构