嵌入式boa服务器的移植
下载后可任意编辑 嵌入式boa服务器的移植 硬件平台AT91SAM9G20 开发环境Vmwareubuntu10.04 交叉编译器arm-linux-guneabi- arm-linux-gcc-3.4.1 软件版本linux2.6.27,boa-0.94.13.tar.gz 一准备boa服务器源代码 下载地址http// 二安装交叉编译器。 参考网上的嵌入式boa服务器的移植,其中修改boa中Makefile文件的交叉编译器,如 CC gcc CPP gcc -E 该为 CC arm-linux-gcc CPP arm-linux-gcc -E 先前,在编译内核,文件系统,都是用arm-linux-gnueabi-编译器,因为担心不同的编译器编译的东西,可能不能不兼容,因此,就直接将CC改为arm-linux-gnueabi-,将CPP改为arm-linux-gnueabi-g,后来出现错误。于是便决定参考网上的方法,安装arm-linux-gcc编译器,试试 交叉编译器的下载地址http//handhelds.org/download/projects/toolchain/ 三移植boa服务器 1编译boa服务器 ①解压tar –zxvf boa-0.94.13.tar.gz ②进入boa-0.94.13/src目录,./configure ③修改交叉编译器路径 gedit Makefile 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 -E LDFLAGS -g -static添加静态编译选项。 ④make ⑤去除调试信息 /home/zzq/9G20/tools/usr/local/arm/3.4.1/bin/arm-linux-strip boa 经4,5步之后,便在src目录下生成boa可执行文件。以为这个文件添加到文件系统后,就可以运行,没想到除了一大堆的错误,还好,网上都有这些解决这些问题的办法 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_log AccessLog /var/log/boa/access_log 注意这里/var/log/boa目录必须为可写,否则会出项错误log.c73 – 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-bin ⑥ServerName的设置 修改ServerName www.your.org.here/ ServerName www.your.org.here/ 注意默认未打开,在执行boa会异常退出,提示“gethostbynameNo 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和img目录放到/var/www目录下。 4测试 ①通过nfs挂载根文件系统 ②设置开发板ip ifconfig eth0 192.168.1.1 ③运行boa ④在PC机上输入目标板的ip,即可看到静态网页index.html。 5在运行boa时常出现的错误 ① gethostbyname No such file or directory 解决办法 修改boa.conf 去掉 ServerName www.your.org.here 前的注释符号 ②util.c1001 error pasting t and - does not give a valid preprocessing token make *** [util.o] 解决办法 修改 src/compat.h 找到 define TIMEZONE_OFFSETfoo foo -tm_gmtoff 修改成 define TIMEZONE_OFFSETfoo foo-tm_gmtoff ③boa.c211 - getpwuid No such file or directory 解决办法 修改src/boa.c 注释掉下面这段程序 if passwdbuf NULL { DIE”getpwuid”; } if initgroupspasswdbuf-pw_name, passwdbuf-pw_gid -1 { DIE”initgroups”; } 即修改为 if 0 if passwdbuf NULL { DIE”getpwuid”; } if initgroupspasswdbuf-pw_name, passwdbuf-pw_gid -1 { DIE”initgroups”; } endif ④boa.c228 - icky Linux kernel bug No such file or directory 解决办法