基于嵌入式linux的Boa服务器移植

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次 完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度 和安全。

下面给大家介绍一下Boa服务器移植的具体操作步骤,希望能够有帮助。

环境

主机:ubuntu8.10

交叉工具链:gcc-3.4.5-glibc-2.3.6

目标:s3c2410开发板

结合网上一些文档,整理了一个比较完整的文档。

1.下载Boa源码

下载地址: http://www.boa.org/

最新发行版本: 0.94.13

下载 boa-0.94.13.tar.gz

解压:# tar xzf boa-0.94.13.tar.gz

2.安装需要工具bison,flex

sudo apt-get install bison flex

否则会出现如下错误

make: yacc:命令未找到

make: *** [y.tab.c] 错误 127

make: lex:命令未找到

make: *** [lex.yy.c] 错误 127

3.修改文件

(1)修改 src/compat.h

找到

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff

修改成

#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff

否则会出现错误:

util.c:100:1: error: pasting “t” and “->” does not give a valid preprocessing token make: *** [util.o] 错误 1

(2)修改 src/log.c

注释掉

if (dup2(error_log, STDERR_FILENO) == -1) {

DIE(“unable to dup2 the error log”);

}

为:

/*if (dup2(error_log, STDERR_FILENO) == -1) {

DIE(“unable to dup2 the error log”);

}*/

否则会出现错误:

log.c:73 unable to dup2 the error log:bad file deor

(3)修改src/boa.c

注释掉下面两句话:

if (passwdbuf == NULL) {

DIE(”getpwuid”);

}

if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

DIE(”initgroups”);

}

[1][2][3]

如果可以,我真想和你一直旅行。

基于嵌入式linux的Boa服务器移植

相关文章:

你感兴趣的文章:

标签云: