本文主要内容如下:

1、Mongoose介绍

Mongoose开源项目的主页是。Mongoose是一个web服务器,通过提供一个web插口给它,它可以嵌入到现有的应用程序中去。Mongooseweb服务器的执行是自满足的,它不依赖于任何其他服务。假如你将它复制到任何目录并执行,它将将启动web服务并将当前目录作为主目录、端标语是8080。其实这种配置选项都可以通过配置文件mongoose.conf设置。

Mongoose它的前身是shttpd,它完全开源和自由使用。它还具有如下特点:

2、Mongoose的编译和使用

关于Mongoose里面应当早已介绍了它的主要特点。所谓耳听为虚linux下由o文件编译生成cgi文件,眼见为实,不过如今这个时代眼见也未必为实,正所谓实践见真知,下边还是来亲身体验下。Windows版本的Mongoose安装和使用,我就不介绍了,众所周知Windows下边的软件的安装基本都是傻蛋式的。下边我介绍的是linux下mongoose的编译和使用(我使用的linux是Ubuntu10.04)。

首先去主页里面下载Mongoose的源码(mongoose-2.8.tgz)。将其解压可以见到如下的文件列表:

图1、mongoose源码的文件列表

linux cgi文件_linux 编译生成so文件_在linux下由o文件编译生成cgi文件

虽然我们主要用到的就是mongoose.h/c文件,像main.c文件只是拿来测试用的。假如你想将mongoose嵌入到你的项目中,主须要用到mongoose.h/c就ok了!并且之后主要的分析工作就是置于mongoose.h/c上。其中的Makefile文件是用于编译,生成可执行文件和库文件等。

用makelinux命令就可以将源码编译为linux版本的mongoose红旗linux操作系统,如右图所示:

图2、linux下边Mongoose的编译和执行

如上图,当我们输入make命令的时侯,会提示你带相应环境的参数make(linux|bsd|solaris|mac|windows|mingw)在linux下由o文件编译生成cgi文件,这儿我们选择linux。编译完以后,生成了两个文件:一个可执行文件mongoose、一个库文件_mongoose.so。你可以直接将_mongoose.so库文件领到你的项目中去使用(其实是基于linux环境的项目,假如在Windows环境下是编译出相应的dll文件,去直接使用)。

从上图可以看出,编译完以后我们运行了(./mongoose),见到Mongoose2.8startedonport(s)[8080],servingdirectory[/home/netsky/Downloads/mongoose]。即如今就启动了webserver,当前工作目录是/home/netsky/Downsloads/mongoose红旗linux桌面版,端标语是8080。我们可以在浏览器中输入来访问web服务器(或则假如你跟我一样是在Ubuntu是运行在虚拟机中,你可以在外边的Windows系统中用浏览通过的ip:8080/来访问),如右图所示:

在linux下由o文件编译生成cgi文件_linux 编译生成so文件_linux cgi文件

图3、访问mongoose开启的web服务

我们查看mongoose打下来的log,如右图:

图4、mongoose复印的log

从log可以看出有两个client,一个是我刚刚在linux上面通过浏览器打开web服务的根目录;另一个是我在Windows下边通过浏览器打开web服务的根目录。

3、Makefile的简单剖析

下边我们简单剖析一下Makefile文件,看我们执行makelinux的时侯,编译了哪些源文件,及编译的一些选项。

从PROG=mongoose和LIB=_$(PROG).so可以晓得编译生成的执行文件名和库的名子;

从linux:

$(CC)$(LINFLAGS)mongoose.c-shared-fPIC-fpic-s-o$(LIB)

$(CC)$(LINFLAGS)mongoose.cmain.c-s-o$(PROG)

我们晓得,在linux下边编译用到了什么源文件:编译库文件_mongoose.so时仅用到了mongoose.c文件,编译可执行文件时不仅mongoose.c文件还用到了main.c。注意里面的变量$(LINFLAGS),即编译时的选项为:

其中$(COPT)选项是我们make的时侯跟的一些选项,下边列举那些选项及其意义:

all:

@echo"make(linux|bsd|solaris|mac|windows|mingw)"

#PossibleCOPTvalues:(inbracketsareroughnumbersfor'gcc-O2'oni386)

#-DHAVE_MD5-usesystemmd5library(-2kb)

#-DNDEBUG-stripoffalldebugcode(-5kb)

#-DDEBUG-builddebugversion(verynoisy)(+7kb)

#-DNO_CGI-disableCGIsupport(-5kb)

linux cgi文件_linux 编译生成so文件_在linux下由o文件编译生成cgi文件

#-DNO_SSL-disableSSLfunctionality(-2kb)

#-DCONFIG_FILE="file"-use`file'asthedefaultconfigfile

#-DNO_SSI-disableSSIsupport(-4kb)

#-DHAVE_STRTOUI64-usesystemstrtoui64()functionforstrtoull()

Makefile就简单的剖析到这了,如今应当比较清楚可执行文件及库是如何生成的了。(提示:Windows下边的编译,Makefile文件中也早已给出了,请查看Makefile文的后半部份。)

4、如何将Mongoose嵌入到应用程序中

目前Mongoose可以支持嵌入到C/C++、Python、C#,并且在下一个版本(2.9)将支持Ruby、Lua。但在这儿我只介绍如何样将Mongoose嵌入到C/C++中。似乎将Mongoose嵌入到C/C++应用程序中很简单,由于Mongoose原本就是用C编撰的,因而可以十分简单的将它嵌入到你的应用程序中。

关于怎么编撰类似main.c代码调用mongoose提供的插口,这个工作在本系列旁边的文章中介绍。

至此,将Mongoose嵌入到你的C/C++应用程序中的工作早已完成,如今你执行./test即可以应用你的应用程序,它调用到了mongoose提供的一些插口。

一般前面的介绍,是不是认为在应用程序嵌入Mongoose很简单呢!是的就是如此简单。

本文原创地址:https://www.linuxprobe.com/wbbdmazhsym.html编辑:刘遄,审核员:暂无