欢迎来到天天文库
浏览记录
ID:10265647
大小:34.50 KB
页数:5页
时间:2018-06-14
《boa在嵌入式linux上的移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、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://ww
2、w.boa.org/最新发行版本:0.94.13下载boa-0.94.13.tar.gz解压:#tarxzfboa-0.94.13.tar.gz2.安装需要工具bison,flexsudoapt-getinstallbisonflex否则会出现如下错误make:yacc:命令未找到 make:***[y.tab.c]错误127make:lex:命令未找到 make:***[lex.yy.c]错误1273.修改文件(1)修改src/compat.h找到#defineTIMEZONE_OFFSET(foo)foo##->tm_gmtoff修改成#
3、defineTIMEZONE_OFFSET(foo)(foo)->tm_gmtoff否则会出现错误:util.c:100:1:error:pasting"t"and"->"doesnotgiveavalidpreprocessingtokenmake:***[util.o]错误1(2)修改src/log.c注释掉if(dup2(error_log,STDERR_FILENO)==-1){ DIE("unabletodup2theerrorlog"); }为:/*if(dup2(err
4、or_log,STDERR_FILENO)==-1){ DIE("unabletodup2theerrorlog"); }*/否则会出现错误:log.c:73unabletodup2theerrorlog:badfiledescriptor(3)修改src/boa.c注释掉下面两句话:if(passwdbuf==NULL){ DIE(”getpwuid”); } if(initgroups(passwdbuf->pw_name,passwdb
5、uf->pw_gid)==-1){ DIE(”initgroups”); }为#if0 if(passwdbuf==NULL){ DIE(”getpwuid”); } if(initgroups(passwdbuf->pw_name,passwdbuf->pw_gid)==-1){ DIE(”initgroups”); } #endif否则会出现错误:boa.c:211-getpwuid:Nosuchfileordirectory注释掉下面语
6、句:if(setuid(0)!=-1){ DIE(”ickyLinuxkernelbug!”); }为#if0 if(setuid(0)!=-1){ DIE(”ickyLinuxkernelbug!”); }#endif否则会出现问题:boa.c:228-ickyLinuxkernelbug!:Nosuchfileordirectory4、生成Makefile文件执行:#cdboa-0.94.13/src
7、 #./configure5、修改Makefilecdsrc vimMakefile修改CC=gcc为CC=arm-softfloat-linux-gnu-gcc修改CPP=gcc-E为CC=arm-softfloat-linux-gnu-gcc-E6、编译make ls-lboa -rwxr-xr-x1daviddavid1892232009-05-3113:44boa然后为生成的二进制文件boa瘦身arm-softfloat-linux-gnu-stripboa ls-lboa
此文档下载收益归作者所有