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生成。