交叉编译嵌入式web服务器boa

来源:互联网 发布:京东抢商品软件 编辑:程序博客网 时间:2024/05/10 12:54

/*************************************************

 帅得不敢出门    C++爱好者灌水天堂   3503799   转载请保留此信息

*************************************************/

步骤大部分都一样吧,只是交叉编译器会有不同.

第一步Boa 程序的移植
    目标板为xscale pxa270 ,交叉编译器arm-linux-gcc
去网上下了一份源代码 http://www.boa.org/
Latest Released Version (0.94.13) here (signature here)
点击here弹出文件下载窗口下载它
解压出来
# tar zxvf boa-0.94.13.tar.gz 
进入 src目录
# cd boa-0.94.13/src
生成Makefile文件
# ./configure
修改Makefile
# vi Makeifle
找到CC=gcc
改成CC = arm-linux-gcc
找到CPP = gcc –E
改成CPP = arm-linux-gcc –E
如果直接make的话,会出现如下error
util.c:100:40: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
修改src/compat.h:
# vi compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
编译
# make
剥离调试信息
# arm-linux-strip boa
完成
二、Boa 的配置和安装
跳到上一个目录
# cd ..
# vi boa.conf
1.修改Group nogroup为Group 0 设置成只有root用户才可执行boa服务
2.ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 改成ScriptAlias /cgi-bin/ /var/www/cgi-bin/
3. 去掉#ServerName www.your.org.here前面的#号
其他几个有用的信息:(MimeTypes: This is the file that is used to generate mime type pairs
and Content-Type fields for boa.)
                                                                               
MimeTypes /etc/mime.types

(CGIPath: The value of the $PATH environment variable given to CGI progs.)
                                                                               
CGIPath /bin:/usr/bin:/usr/local/bin

(# ErrorLog: The location of the error log file. )
ErrorLog /var/log/boa/error_log
在目标板上的Linux 中建立相应的目录
mkdir /etc/boa     Boa 配置文件的目录
mkdir /var/log    
mkdir /var/log/boa  Log 文件的目录
mkdir /var/www      Boa 服务的根目录
mkdir /var/www/cgi-bin CGI 文件的目录

把boa拷贝到--->目标板下的/usr/bin或者/usr/local/bin下(CGIPath)
index.html以及相应的静态网页文件-->/var/www
mime.types可以在主机的/etc 下找到--->/etc
boa.conf 修改后的配置文件--->/etc/boa
设置好网络参数,后台运行boa:
boa &
将主机与目标平台的IP设成同一网段,然后打开任一个浏览器(linux或windows下都可),
输入目标平台的ip地址(http//192.168.0.50/)即可打开/var/www/index.html网页

三、CGI 脚本测试
建立一个helloworld.c
#include <stdio.h>
int main(void)
{
printf("Content-type: text/html/n/n");
printf("<html>/n");
printf("<head><title>CGI Output</title></head>/n");
printf("<body>/n");
printf("<h1>Hello,world.</h1>/n");
printf("<body>/n");
printf("</html>/n");
exit(0);
}
编译
# arm-linux-gcc -o helloworld.cgi helloworld.c
将生成的helloworld.cgi 拷贝到目标板上的/var/www/cgi-bin 中,并在浏览器中输入:
http://192.168.0.50/cgi-bin/helloworld.cgi
即可看见相应的结果