Chinaunix首页 | 论坛 | 博客
  • 博客访问: 186089
  • 博文数量: 20
  • 博客积分: 2010
  • 博客等级: 大尉
  • 技术积分: 405
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-19 13:00
文章分类
文章存档

2011年(1)

2009年(18)

2008年(1)

我的朋友

分类: 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.23.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的欢迎主页,当在局域网的PCIE上输入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

因为我的主机IP169.254.42.223,接下来设置开发板IP

#ifconfig eth0 169.254.42.220

连接PCARM网络接口,在浏览器中输入输入开发板的IP地址,即,出现是redhat9的欢迎主页,静态网页调试成功

 CGI功能测试

编写hellocgi.c程序

#vi hellocgi.c  

程序如下:

 

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
        printf("Content-type: text/html\n\n");
        printf("\n");
        printf("CGI Output\n");
        printf("\n");
        printf("

Hello,world.

\n");
        printf("\n");
        printf("\n");
        exit(0);
}

交叉编译CGI程序

# /usr/local/arm/2.95.3/bin/arm-linux-gcc -o hellocgi  hellocgi.c

hellocgi拷贝至嵌入式板子的/var/www/cgi-bin/下,当在局域网PCIE上输入/cgi-bin/hellocgi显示出hellocgi的网页。
网页出现
Hello,world.  移植成功!

 

本次移植的主要参考:http://blog.chinaunix.net/u1/34474/showart.php?id=486604

在这里衷心的感谢作者!

阅读(2682) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~