分类: LINUX
2009-03-12 12:51:58
准备工作
1.下载Boa源码
下载地址:
最新发行版本: 0.94.13
下载 boa-0.94.13.tar.gz,注意:从boa上下载的是boa-0.94.13.tar.tar,解压方式一样
将下载的文件放入用户目录
解压:# tar xzf boa-0.94.13.tar.gz
2、生成Makefile文件
boa-0.94.13.tar.gz解压后生成boa-0.94.13目录,运行boa-0.94.13/src/configure文件,
执行:
#cd boa-0.94.13/src
#./configure
3、修改Makefile文件(注意:必须用cross-2.95.3, 如使用3.3.2,3.4.1等等会出错)
a、 修改 CC = gcc
为 CC = /usr/local/arm/2.95.3/bin/arm-linux-gcc (根据自己电脑主机的编译器位置定)
b、 修改 CPP = gcc - E
为 CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc -E
4、编译
进入 boa-0.94.13/src目录
# make
# /usr/local/arm/2.95.3/bin/arm-linux-strip boa (这是为了进行去除boa中生成的编译信息,让文件变小,我在移植过程中没有执行这一步)
5. 将编译好的程序放入arm根文件系统的/bin目录下
# cp boa
/
home
/
arm
/
nfs/rootfs
/
bin
/
Boa的配置
这一步的工作也在电脑主机上完成。
在电脑主机上的Boa源码boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下:
#vi boa.conf
1、Group的修改
修改 Group nogroup
为 Group 0
2、ScriptAlias的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
3、ServerName的设置
修改#ServerName
为 ServerName
注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。
此外,还需要将mime.types文件复制根文件系统/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。
#cp
/
etc
/
mime
.
types etc
/
(以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建)
创建日志文件所在目录/var/log/boa
创建HTML文档的主目录/var/www
创建CGI脚本所在录 /var/www/cgi-bin
#mkdir -m 777 boa
#cd ..
#mkdir -m 777 www
#mkdir -m 777 www/cgi-bin
#cd ..
将主机 /usr/share/doc/HTML/目录下的index.html(这个是静态的html网页显示文件,是redhat9的欢迎主页,当在局域网的PC的IE上输入http://嵌入式板子的IP地址 时会显示这个默认的静态网页)文件和img目录复制到根文件系统的/var/www目录下
# cp /usr/share/doc/HTML/index.html /var/www/
# cp /usr/share/doc/HTML/img /var/www/
将修改后的文件系统下载到ARM板(也可以用nfs启动)
运行Boa
开发板操作:
#boa
出错,后来发现etc目录下原来复制进来的文件不见了,后来发现可能是因为系统启动时将文件挂载在这个文件夹,之前存在的文件都被这些命令删除了。后来我在根文件系统的根目录创建了一个新目录www
#mkdir www
将etc下的boa文件夹和mime.types文件复制到www, 在系统启动linuxrc脚本中,执行完加载的后面添加一条命令将保存在www中的文件复制到etc目录,即添加/bin/cp –r /www/* /etc
重新下载根文件系统到开发板后,执行命令boa
#boa
出错,超级终端显示:log.c:73 unable to dup2 the error log:bad file descriptor
解决方法:在log.c里注释掉那个if语句。
修改后重新执行make等命令,继续上述操作
又出现了另个问题:unable to dup2 the error log: Bad file descriptor
因为我的文件系统是cramfs,只读的
解决方法:在boa.conf里注释掉#AccessLog /var/log/boa/access_log
完成配置后,继续执行命令
#boa
成功,终端显示:
boa: server version Boa/0.94.13
boa: server built Mar 11 2009 at 20:40:11
boa: starting server pid=765, port 80
因为我的主机IP为169.254.42.223,接下来设置开发板IP
#ifconfig eth0 169.254.42.220
连接PC和ARM网络接口,在浏览器中输入输入开发板的IP地址,即,出现是redhat9的欢迎主页,静态网页调试成功
编写hellocgi.c程序
#vi hellocgi.c
程序如下:
|
交叉编译CGI程序
# /usr/local/arm/2.95.3/bin/arm-linux-gcc -o hellocgi hellocgi.c
将hellocgi拷贝至嵌入式板子的/var/www/cgi-bin/下,当在局域网PC的IE上输入/cgi-bin/hellocgi显示出hellocgi的网页。
网页出现 Hello,world. 移植成功!
本次移植的主要参考:http://blog.chinaunix.net/u1/34474/showart.php?id=486604
在这里衷心的感谢作者!