嵌入式WebServer GOAHEAD移植实验.doc
文本预览下载声明
实验十五 嵌入式WebServer GoAhead 移植实验
一,实验目的
完成这个实验后,您将具有以下能力:
??了解GoAhead webserver 的移植方法。
??学习如何使用GoAhead web 服务器。
二,基础知识
进行本实验前,您应具有:
??C 语言基础
??Linux 环境下vi 编译器的使用
??Makefile 的编写和使用
??Linux 下的程序编译与交叉编译过程
三,实验环境准备
为了完成本实验,以下硬件条件是必需的:
??UP-NETARM2410-S 嵌入式实验平台
??PC 机Pentium500 以上,硬盘40G 以上,内存128M 以上
为了完成本实验,以下软件条件是必需的:
??PC 机操作系统RedHat Linux 9.0
??ARM-LINUX 开发环境
??webs218.tar.gz 压缩包
四,情景描述
下载webs218.tar.gz 压缩包并且解压,之后对LINUX 目录下的main.c 程序和Makefile 进行
改造,并且通过交叉编译器进行编译。将生成的webs 程序在开发板上执行并测试。
五,实验基本原理
1, GoAhead Webserver 介绍
GoAhead Webserver是为了嵌入式设备的需要而设计的。该Webserver软件很有特色且
开源,它具有各种各样的特性,包括支持活动服务页,嵌入Java描述语言,in-process CGI
形式,SSL,文摘访问认证,用户管理和标准CGI等等,这些全部在一个60K大小的存储脚
本中。这对于那些需要在基于浏览管理模式的设备上传递动态信息的系统管理开发人员来
说,是非常有用和高效的。
GoAhead Webserver支持多种开发平台和操作系统,包括Windows NT/98/95、Windows CE、
Embedded Linux、Linux、VxWorks、QNX、Lynx等等,因此具有很强大的移植特性。GoAhead
网络服务器的发展同时也促进了嵌入式网络服务器的源代码的进化。世界各地的厂商和爱好
者都纷纷下载并优化GoAhead的源代码,这也使得GoAhead WebServer成为了市场上最优秀
的嵌入式网络服务器之一。
2,webs218.tar.gz 介绍
webs218.tar.gz 压缩包包括如下内容,如图15.1 所示:
图15.1
该压缩包包括以操作系统分类的各个文件夹,一个说明文档所在的web文件夹以及多个
支持编译文件。在该实验中,我们只使用到LINUX文件夹下面的有关内容,并且用到web
文件夹下的说明文档进行测试。
六,估计完成实验需要时间:60 分钟
练习1
GoAhead WebServer 移植相关实验
目标
了解移植GoAhead的基本步骤。
任务 详细步骤
1. 新建一个目录,将这个实验
所需要用到的压缩包复制进去并
解压。
从网站 下载压缩包webs218.tar.gz,并且准备解压。
tar –xjf my-goahead.tar.bz2
解压缩后的文件夹是 ws031202,之后进入该文件夹下的LINUX。
cd ws031202/LINUX
2. 执行第一步:
修改LINUX 目录下的Makefile
文件
因为GoAhead 默认是以x86 体系结构来构造的,因此这里需要把
Makefile 文件中的编译器更改为能够在ARM 体系结构下运行的交
叉编译器。在Makefile 文件开头添加如下两个变量:
CC=armv4l-unknown-linux-gcc
AR=armv4l-unknown-linux-ar
之后将该文件中所有的cc 和ar 都更改为$(CC)和$(AR)即可。
这样在Makefile 文件中使用到的编译器就是开发板所使用的交叉
编译器了。
3. 执行第二步:
修改LINUX 目录下的main.c
文件
由于该开发板本身没有hostname,例如在开发板下输入如下命令:
hostname
可以看到none,说明开发板不存在hostname。
因此在main.c 下的initWebs()函数中使用到的gethostbyname 函数无用。
所以把如下内容屏蔽,并在之后直接将IP 地址写入intaddr。
注释内容:
/*
if (gethostname(host, sizeof(host)) 0) {
error(E_L, E_LOG, T(Cant get hostname));
return -1;
}
if ((hp = gethostbyname(host)) == NULL) {
error(E_L, E_LOG, T(Cant get host address));
return -1;
}
memcpy((char *
显示全部