在Linux下使用C++开发Nginx模块的编译配置
来源:互联网 发布:windows.old可以移动 编辑:程序博客网 时间:2024/05/29 13:00
Nginx是纯C编写的一个开源服务器,拥有强大的拓展性,用户可以自行编写特定的模块插入到Nginx中实现特定的功能。然而Nginx是一个完全依赖C语言实现的程序,不能满足当前开发需要,于是我们可以通过C++的新特性来对Nginx进行二次开发,使用gcc编译Nginx自身模块,使用C++开发用户模块并通过g++编译,然后使用g++对文件进行链接。
Nginx的自动配置脚本在 ./auto/make文件中,其中包含了编译器,链接器,模块编译的配置信息,我们可以通过更改make文件中的信息实现对Nginx进行混合编译。下面为Nginx中的make文件
更改步骤:
I.增加C++编译器,添加满足C++11特性的flags,确定最终链接器。如图
删除以前LINK这一行,并加入新的代码
CXX = g++ #确定C++的编译器
CXXFLAGS = -std=c++0x -Wall #满足C++11编译要求
LINK = g++ #确定最后的链接器为g++
II.添加编译C++文件的命令信息。如图
因为我们编译C++文件需要使用g++,为了不和gcc冲突,我们添加一条新的命令,只是更改编译器类型,后面的参数和上面一行一样。
ngx_cxx=”\$(CXX) $ngx_compile_opt \$(CXXFLAGS) $ngx_use_pch \$(ALL_INCS)”
III.编译文件时,我们通过文件后缀知道使用哪一句命令对其进行编译,于是需要添加新的检测文件后缀代码。如图:
首先我们使用echo和cut命令来获取文件后缀,然后判断文件后缀是不是cpp,如果是,则更改编译命令。
ext=echo ${ngx_src}|cut -d . -f 2
ngx_gcc=$ngx_cc
if [ $ext = ‘cpp’ ]; then
ngx_gcc=$ngx_cxx
fi
IV.然后最后一步就是更改编译文件的命令。如图:
删除原来那句,添加新的命令。
$ngx_gcc$ngx_tab$ngx_objout$ngx_obj$ngx_tab$ngx_src$NGX_AUX
然后大功告成,进入Nginx根目录,调用configure命令,即可生成可以编译C和C++文件的Makefile脚本。可进入./objs目录下可以查看新的Makefile文件。
- 在Linux下使用C++开发Nginx模块的编译配置
- 文章5:Linux下使用Eclipse进行Nginx 模块开发
- Linux使用eclipse编译,调试Nginx模块
- Linux使用eclipse编译,调试Nginx模块
- Linux下Nginx自定义模块开发
- lua c在linux下的编译
- Linux:在已安装nginx情况下安装nginx模块
- 在linux下编译安装nginx
- log4cxx在linux下的编译使用
- log4cxx在linux下的编译使用
- log4cxx在linux下的编译使用
- Linux下学objective c的好办法,在ubuntu下使用GNUstep make编译objective c
- andriod开发 1:android在Linux下的环境配置以及编译设置介绍
- Nginx在Linux下的安装与配置
- 在linux下配置nginx+java+php的环境
- nginx+php-fpm在Linux下的安装和配置
- 在linux下配置nginx+java+php的环境
- 在linux下配置nginx+java+php的环境
- Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Canno
- 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 方块填数(编程大题)
- 简单又好用的聊天室技术——WebSocket
- 重装系统时出现<windows root>\system32\ntoskrnl.exe 损坏或者丢失?解决方法。。。。。。
- 页面从底部弹出一个popWindow
- 在Linux下使用C++开发Nginx模块的编译配置
- HDU 2544 最短路
- 饿了么开源项目:Java Comparator生成器
- JAVA006-冒泡排序和方法
- 使用AndroidSdudio并新建多个module
- 【蒟蒻的点分治专题训练】----5道题题解
- 方法的重写(override)两同两小一大原则
- Use git within eclipse
- Workflow Demo