中兴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("
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库.下次再写了.
//****----------------//
按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.
//****-----------------//
主机: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("
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库.下次再写了.
//****----------------//
按照上面的步骤执行之后,需要重新制作文件系统,才能在下此开机之后能够使用.
//****-----------------//
什么是嵌入式WEB服务器
在linux下可以使用的web服务器有哪些?
嵌入式WEB SERVER移植到板子上
怎么样在web服务器上发布网站?
无法在Web服务器上启动调试
嵌入式WEB服务器系统的历史和现状
嵌入式linux源代码 ,在哪里下啊??
如何用LINUX架设WEB服务器!
linux下配置web服务器的问题
嵌入式linux和普通的linux区别详细在哪里?
linux arm 移植
如何在服务器上设置多个web站?
怎样在XP上假设简易的web服务器
无法在Web服务器上启动调试。调试失败
怎么学好基于arm 嵌入式的编程
学arm嵌入式要什么基础吗?
如何在linux服务器上配置磁盘的限额
如何在linux服务器上建立匿名FTP?
如何在linux服务器上安装jar包
请问我作的WEB服务器,为什么在局域网里客户机上,看不到WEB服务器,请问为什么呀
如何学习嵌入式linux
如何学习嵌入式Linux?
嵌入式linux开发问题
做web服务器那个版本linux比较好用啊?