首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

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

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

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”);
    }
返回列表