将Boa移植到Android平台上

amorfait 2011-04-26

boa是一款轻量级的、高性能的嵌入式web服务器,和普通的web服务器一样,它能够解析http协议,完成接收客户端的请求,分析请求,响应请求,向客户端返回响应结果等任务。本文将介绍如何把它移植到Android平台上。下面是具体的移植步骤:

一、移植准备:
(1)Android源码,可以到google网站下载。

(2)boa源码,本人用的版本是0.94.13,可以到http://www.boa.org/ 下载。

二、在Android平台上编译boa和boa_indexer
将boa移植到Android平台上,最主要一点就是把boa的makefile改成Android平台上的makefile,即Android.mk。

我们首先将boa源码目录拷贝到android源码的一个目录下,比如external目录下,然后在boa源码目录下新建Android.mk文件,参照boa的makefile,将生成boa可执行程序需要的那些源文件放在Android.mk的LOCAL_SRC_FILES:=中,如下:

/*****************************************************************************/

LOCAL_SRC_FILES:= \

         src/lex.yy.c \

    src/y.tab.c \

         src/alias.c \

         src/boa.c \

         src/buffer.c \

         src/cgi.c \

         src/cgi_header.c \

         src/config.c \

         src/escape.c \

         src/get.c \

         src/hash.c \

         src/ip.c \

         src/log.c \

         src/mmap_cache.c \

         src/pipe.c \

         src/queue.c \

         src/read.c \

         src/request.c \

         src/response.c \

         src/select.c \

         src/signals.c \

         src/util.c \

         src/sublog.c \

         src/timestamp.c

/*****************************************************************************/

接着,将boa的makefile中的编译规则GCC_FLAGS,搬到Android.mk的LOCAL_CFLAGS后面,如下:

/*****************************************************************************/

LOCAL_CFLAGS := -Wstrict-prototypes -Wpointer-arith -Wcast-align -Wcast-qual \

                   -Wtraditional \

                   -Wshadow \

                   -Wconversion \

                   -Waggregate-return \

                   -Wmissing-prototypes \

                   -Wnested-externs \

                   -Wall \

                   -Wundef -Wwrite-strings -Wredundant-decls –Winline

/*****************************************************************************/

最后,生成boa可执行程序,如下:

/*****************************************************************************/

LOCAL_MODULE:= boa

include $(BUILD_EXECUTABLE)

/*****************************************************************************/

注意:源码中的lex.yy.c在boa的源文件中找不到,但从makefile中我们可看出该文件由flex调用boa_lexer.l脚本生成的,命令如下:

flex  boa_lexer.l,所以,我们需要手动执行该命令,先生成lex.yy.c。

至此,在android源码根目录下执行"make boa",便可执行程序boa生成。

相关推荐