嵌入式boa服务器的移植_第1页
嵌入式boa服务器的移植_第2页
嵌入式boa服务器的移植_第3页
嵌入式boa服务器的移植_第4页
嵌入式boa服务器的移植_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、嵌入式boa服务器的移植硬件平台:AT91SAM9G20开发环境:Vmware+ubuntu10.04交叉编译器:arm-linux-guneabi- arm-linux-gcc-3.4.1软件版本:linux2.6.27,boa-0.94.13.tar.gz一:准备boa服务器源代码下载地址:二:安装交叉编译器。参考网上的嵌入式boa服务器的移植,其中修改boa中Makefile文件的交叉编译器,如:CC = gcc CPP = gcc -E 该为: CC = arm-linux-gcc CPP = arm-linux-gcc -E先前,在编译内核,文件系统,都是用arm-linux-gnu

2、eabi-编译器,因为担心不同的编译器编译的东西,可能不能不兼容,因此,就直接将CC改为arm-linux-gnueabi-,将CPP改为arm-linux-gnueabi-g+,后来出现错误。于是便决定参考网上的方法,安装arm-linux-gcc编译器,试试!交叉编译器的下载地址:/download/projects/toolchain/三:移植boa服务器1:编译boa服务器解压#tar zxvf boa-0.94.13.tar.gz进入boa-0.94.13/src目录,#./configure#修改交叉编译器路径 #gedit Makefile

3、CC = gcc CPP = gcc -E 该为: CC = /home/zzq/9G20/tools/usr/local/arm/3.4.1/bin/arm-linux-gcc CPP = /home/zzq/9G20/tools/usr/local/arm/3.4.1/bin/arm-linux-gcc -ELDFLAGS = -g -static(添加静态编译选项)。#make去除调试信息#/home/zzq/9G20/tools/usr/local/arm/3.4.1/bin/arm-linux-strip boa经4,5步之后,便在src目录下生成boa可执行文件。以为这个文件添加到

4、文件系统后,就可以运行,没想到除了一大堆的错误,还好,网上都有这些解决这些问题的办法2:修改boa.conf文件修改User nobody 为 User 0 ; 修改Group nogroup 为 Group 0设定日志目录:boa日志有两部分,Errorlog 和 AccessLog一般情况下为/var/log/boa/error_log 和 /var/log/boa/access_log两个文件。所以根据自己的情况情况设置日志目录:ErrorLog /var/log/boa/error_logAccessLog /var/log/boa/access_log (注意:这里/var/log/

5、boa目录必须为可写,否则会出项错误:log.c:73 Unable to dup2 the error log: Bad file r.)设置html文件目录:DocumentRoot /var/www设置默认首页: DirectoryIndex index.html设置cgi脚本目录: 将 ScriptAlias /cgi-bin/ /usr/lib/cgi-bin 修改为 ScriptAlias /cgi-bin/ /var/www/cgi-binServerName的设置修改#ServerName .here/ServerName .he

6、re/(注意:默认未打开,在执行boa会异常退出,提示“gethostbyname:No shuc file or directory”,所以必须打开)3:将boa服务器到文件系统在开发板文件系统中,创建相应目录#mkdir -p /var/log/boa#mkdir -p /var/www /var/www/cgi-bin 拷贝PC上/etc/mime.types文件到开发板/etc目录下 (或者将boa.conf文件中MimeTypes /etc/mime.types 修改为: MimeTypes /dev/null )将可执行文件boa复制到/bin目录下。将静态网页index.html

7、和img目录放到/var/www目录下。4:测试通过nfs挂载根文件系统设置开发板ip#ifconfig eth0 运行boa在PC机上输入目标板的ip,即可看到静态网页:index.html。5:在运行boa时常出现的错误 gethostbyname: No such file or directory 解决办法: 修改boa.conf 去掉 ServerName .here 前的注释符号(#) util.c:100:1: error: pasting "t" and "->" does not gi

8、ve a valid preprocessing token make: * util.o 解决办法: 修改 src/compat.h 找到 #define TIMEZONE_OFFSET(foo) foo# ->tm_gmtoff 修改成 #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff boa.c:211 - getpwuid: No such file or directory 解决办法: 修改src/boa.c 注释掉下面这段程序: if (passwdbuf = NULL) DIE(”getpwuid”); if (initgroup

9、s(passwdbuf->pw_name, passwdbuf->pw_gid) = -1) DIE(”initgroups”);即修改为:#if 0 if (passwdbuf = NULL) DIE(”getpwuid”);if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) = -1) DIE(”initgroups”); #endifboa.c:228 - icky Linux kernel bug!: No such file or directory解决办法: 修改src/boa.c注释掉下面语句: if

10、 (setuid(0) != -1) DIE(”icky Linux kernel bug!”); 即修改为: #if 0 if (setuid(0) != -1) DIE(”icky Linux kernel bug!”); #endif log.c:73 unable to dup2 the error log:bad file descriptor 解决方法: 方法1> 确定日志目录对与所有用户都具有可读/写的权限 方法2> 修改src/log.c (建议采用方法1)注释掉if (dup2(error_log, STDERR_FILENO) = -1) DIE("u

11、nable to dup2 the error log");即修改为:#if 0 if (dup2(error_log, STDERR_FILENO) = -1) DIE("unable to dup2 the error log"); #endif 四:简单CGI程序的测试#include <stdio.h>int main(void) printf("Contenttype:text/htmlnn");printf("<html>n");printf("<head><title>CGI</title></head>n");printf("<body>n");printf("<h2> Hello World</h2>n");printf("</body>n");printf("</html>n");exit(0);编译:arm-linux-gcc -o hello.cgi hello.c编译可以通过,但是在测试时,出现了一个错误:/cgi-bi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论