中兴f450a 破解:嵌入式WEB服务器在ARM-Linux上的移植全过程 - ::电子爱好者天地::. - 西...

来源:百度文库 编辑:偶看新闻 时间:2024/05/06 17:35:10
因为要用,所以查了一些资料,再结合自己的实际情况,在ARM板子上做了一个WEB服务器,服务器可以通过CGI进行动态交互.现记录于此.
主机:redhat企业版4
目标板:EBD9260-S(内核版本2.6.19)
主机IP:192.168.0.12
目标板IP:192.168.0.11
交叉编译环境已经设置好.由于ARM资源的限制,不可能将一些大型的服务器移植上去,对脚本的支持也不大可能,开源的boa就是这么一个服务器:可以传送静态网页和通过纯CGI的方式进行交互.
步骤:
1.从www.boa.org上下载boa的源码,目前版本是boa-0.94.13
2.tar -xzvf boa-0.94.13
   cd boa-0.94.13/src
  ./configure,生成Makefile
3.vi Makefile,修改:
CC=armv5l-linux-gcc
CPP=armv5l-linux-gcc -E
保存退出
4.make,出现错误:
util.c:100:1:pasting "t" and "->" does not give a valid preprocessing token
5.修改compat.h中:
#define TIMEZONE_OFFSET(foo)  foo##->tm_gmtoff
#define TIMEZONE_OFFSET(foo) foo##->tm_zone
为:
#define TIMEZONE_OFFSET(foo)  (foo)->tm_gmtoff
#define TIMEZONE_OFFSET(foo)   (foo)->tm_zone
6.还有一个错误需要修改:
将boa.c中的
if(setuid(0)!=-1){
     DIE("icky Linux Kernel bug!");
}
将这三行注掉,不然编译不会出错,但是启动不起来
7.重新make,生成可执行文件boa
8.剥去调试信息:armv5l-linux-strip boa
9. 修改boa-0.94.13目录中的boa.conf:
port 80
user 0
group 0
Errorloog /var/log/boa/error_log
Accesslog /var/log/boa/access_log
server Name  www.xibiren.com
Document Root /var/www
DirectaryIndex index.html
KeepAliveMax 1000
KeepAliveTimeOut 10
Mimetypes /etc/mime.types
DefaultType text.plain
CGIPATH /bin:/usr/bin:/usr/local/bin
Alias /doc /usr/doc
ScriptAlias /cgi-bin/ /var/www/cgi/bin/
10:在目标板上:
mkdir    /var/www
mkdir   /var/www/cgi-bin
mkdir  /var/log/boa
mkdir  /etc/boa
通过ftp或者nfs的方式将主机下的/etc/mime_types.h传到目标板/etc下
将刚才修改的boa.conf传到/etc/boa下
将生成的boa可执行文件传到/usr/bin下
制作index.html,将其传到目标板/var/www/下
11.在目标板上启动boa,在主机上的浏览器中输入:http://92.168.0.11就可以看到index.html的内容了,如果看到,则说明boa移植成功了
12.测试cgi.
编写hello.cgi:
#include   
int main(void)
{
   printf("Conten-type:text/html\n\n");
   printf("\n");
   printf("CGI OUTPUT\n");
   printf("");
   printf("

Hello,xibiren!

\n");
   printf("\n");
   printf("\n");
   exit(0);
}
然后armv5l-linux-gcc -o hello.cgi hello.c
生成hello.cgi,将其传输到目标板上/var/www/cgi-bin/目录下
13.在主机浏览器中输入http://192/168.0.11/cgi-bin/hello.cgi
如果能看到:
Hello,xibiren!
的测试界面,则说明cgi测试通过.
//****----------------//
要想进一步用好boa的cgi功能,还必须移植CGIC库.下次再写了.
//****----------------//
按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.
//****-----------------//