Chinaunix首页 | 论坛 | 博客
  • 博客访问: 401073
  • 博文数量: 77
  • 博客积分: 3149
  • 博客等级: 中校
  • 技术积分: 828
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-25 11:48
文章存档

2012年(5)

2011年(2)

2010年(11)

2009年(44)

2008年(15)

我的朋友

分类: LINUX

2008-12-24 15:13:17

 

一、Boa程序的移植

1、下载Boa源码
   
下载地址:
   
目前最新发行版本: 0.94.13   (几年没更新版本了)
   
下载 boa-0.94.13.tar.gz

    解压:

[root@Localhost source]$tar xzf boa-0.94.13.tar.gz

2、生成Makefile文件
   
进入boa-0.94.13直接运行src/configure文件

[root@Localhost src]$./configure

3、修改Makefile文件

arm-linux-gcc加入到PATH路径信息中

CROSS = arm-linux-

CC = $(CROSS)gcc

CPP = $(CROSS)gcc -E

#CC = gcc

#CPP = gcc -E

arm-linux-gcc: installation problem, cannot exec `cpp0': ?????????

arm-linux-gcc: installation problem, cannot exec `cpp0': ?????????

arm-linux-gcc: installation problem, cannot exec `cc1': ?????????

arm-linux-gcc: installation problem, cannot exec `cpp0': No such file or directory

解决的办法,把arm-linux-gcc安装在他的默认目录。

2.95.3          /usr/local/arm/2.95.3/bin/

 

(注意:必须用cross-2.95.3, 如使用3.4.14.1.1等等会出错或x86 gcc mipsel-linux-gcc都会报如下的错误,修改后错误不再出现)

gcc -g -O2 -pipe -Wall -I. -c -o util.o util.c

util.c1001 error pasting "t" and "->" does not give a valid preprocessing token

make *** [util.o] Error 1

解决方法:

修改 src/compat.h

#define TIMEZONE_OFFSETfoo foo##->tm_gmtoff

修改成

#define TIMEZONE_OFFSETfoo foo->tm_gmtoff

 

4、交叉编译

[root@Localhost src]$ make

5、去除调试信息,减小体积,大约能减小一半还多。(可选)

[root@Localhost src]$ arm-linux-strip boa

6、将编译好的程序放入根文件系统的/bin目录下。

二、配置Boa(以下部分未亲自测试,文字来源于转载博客)

Boa需要在/etc目录下建立一个boa目录,里面放入Boa的主要配置文件boa.confBoa源码目录下已有一个示例boa.conf,可以在其基础上进行修改。

[root@Localhost src]$ cd ../..
[root@Localhost source]$ cd ../nfs/rootfs/etc/
[root@Localhost etc]$ mkdir boa
[root@Localhost etc]$ chmod 777 boa/

[root@Localhost etc]$ cd boa
[root@Localhost boa]$ kwrite boa.conf

1Group的修改

修改 Group nogroup
Group user开发板上有的组
修改 User nobody
User boa user组中的一个成员

根据你的开发板的情况设定。一定要存在的组和用户。

 

以下是我在开发板上的操作:

[root@~]#adduser -g user boa
Changing password
for
boa
Enter the
new password (minimum of 5, maximum of 8 characters)

Please use a combination of upper
and lower case letters and numbers.
Enter
new password:
Bad password
: too short.

Warning
: weak password (continuing).
Re
-enter new password:
passwd
[820]: password for `boa' changed by user `root'
Password changed
.
[root@~]#

2ScriptAlias的修改

修改 ScriptAlias /cgi-bin/  /usr/lib/cgi-bin/
ScriptAlias /cgi-bin/  /var/www/cgi-bin/

这是在设置CGI的目录,你也可以设置成别的目录。比如用户文件夹下的某个目录。

3ServerName的设置

修改 #ServerName
ServerName

注意:该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or directory”,所以必须打开。其它默认设置即可。你也可以设置为你自己想要的名字。比如我设置为:ServerName tekkaman2440

此外,还需要:

mime.types文件复制/etc目录下,通常可以从linux主机的 /etc目录下直接复制即可。

(以下配置和boa.conf的配置有关)

创建日志文件所在目录/var/log/boa

创建HTML文档的主目录/var/www

创建CGI脚本所在录 /var/www/cgi-bin

[root@Localhost log]$ mkdir -m 777 boa
[root@Localhost log]$ cd ..
[root@Localhost var]$ mkdir -m 777 www
[root@Localhost var]$ mkdir -m 777 www/cgi-bin
[root@Localhost var]$ cd ..
[root@Localhost rootfs]$ cp /etc/mime.types etc/

三、运行Boa

开发板操作:

[root@~]#boa

如果发现boa没有运行,则可以在开发板的/var/log/boa/error_log文件中找原因。

比如端口已被其他程序占用:

[root@~]#cat /var/log/boa/error_log
[20/Feb/2008:21:21:57 +0000] boa.c:194 - unable to bind: Address already in use

或是用户设置错误等等,都可以查到。

Q:无法启动 Boaerror log 显示 "boa.c:266.icky Linux kernel bug!:No such file"

A:修改 src/boa.c,将以下判断注释掉:

/*if (setuid(0) != -1) {

DIE("icky Linux kernel bug!");

}*/

重新编译

Q:无法启动 Boaerror log 显示 "boa.c:211 - getpwuid...."

A:修改 src/boa.c,将以下判断注释掉:

/*if (passwdbuf == NULL) {

DIE("getpwuid");

}

if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {

DIE("initgroups");

}*/

重新编译

四、功能测试

静态网页测试

将静态网页存入根文件系统的/var/www目录下(可以将主机 /usr/share/doc/HTML/目录下的index.htmlhomepage.cssimgstylesheet-images目录复制到/var/www目录下)

我参考《嵌入式Web服务器移植 的做法如下:

在根文件系统的/var目录下

[root@Localhost var]$ cp /usr/share/doc/HTML/index.html www/
[root@Localhost var]$ cp -r /usr/share/doc/HTML/img www/
[root@Localhost var]$ cp /usr/share/doc/HTML/homepage.css www/
[root@Localhost var]$ cp -r /usr/share/doc/HTML/stylesheet-images www/

直接在浏览器中输入开发板的IP地址(比如我的是 ,出现fedora的欢迎网页。静态HTML调试成功。

CGI功能测试

1、编写HelloworldCGI.c程序

[root@Localhost source]$ vi helloworldCGI.c

(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)

#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);
}

2.交叉编译生成CGI程序

[root@Localhost source]$ /home/root/working/gcc4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin/arm-9tdmi-linux-gnu-gcc -o helloworldCGI helloworldCGI.c

helloworldCGI 拷贝至根文件系统的/var/www/cgi-bin/

[root@Localhost source]$ cp helloworldCGI ../nfs/rootfs/var/www/cgi-bin/

3.测试

浏览器输入
  

网页出现 Hello,world. 调试成功! 

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