boa在ARM平台的移植
分类: 嵌入式各种移植 2011-11-28 16:00 215人阅读 评论(0) 收藏 举报
平台descriptortimezonemakefilecgiubuntu
/* 本博主的说明
经过半天的调试,证实一下方案可用,如果你的OS版本不同,交叉编译链的版本不同,也可尝试
但出现的错误可能是其中一部分,不必每一步都按照他的方法做,出了错看一下就好了
*/
作者:曹忠明,华清远见嵌入式学院讲师。
Boa是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。
下面给大家介绍一下Boa服务器移植的具体操作步骤,希望能够有帮助。
环境
主机:ubuntu8.10
交叉工具链:gcc-3.4.5-glibc-2.3.6
目标:s3c2410开发板
结合网上一些文档,整理了一个比较完整的文档。
1.下载Boa源码
下载地址: http://www.boa.org/
最新发行版本: 0.94.13
下载 boa-0.94.13.tar.gz
解压:# tar xzf boa-0.94.13.tar.gz
2.安装需要工具bison,flex
sudo apt-get install bison flex
否则会出现如下错误
make: yacc:命令未找到
make: *** [y.tab.c] 错误 127
make: lex:命令未找到
make: *** [lex.yy.c] 错误 127
3.修改文件
(1)修改 src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
否则会出现错误:
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing tokenmake: *** [util.o] 错误 1
(2)修改 src/log.c
注释掉
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}
为:
/*if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}*/
否则会出现错误:
log.c:73 unable to dup2 the error log:bad file descriptor
(3)修改src/boa.c
注释掉下面两句话:
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
为
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
否则会出现错误:boa.c:211 - getpwuid: No such file or directory
注释掉下面语句:
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
为
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
否则会出现问题:boa.c:228 - icky Linux kernel bug!: No such file or directory
4、生成Makefile文件
执行:
#cd boa-0.94.13/src
#./configure
5、修改Makefile
cd src
vim Makefile
修改CC = gcc 为 CC = arm-softfloat-linux-gnu-gcc
修改CPP = gcc -E 为 CC = arm-softfloat-linux-gnu-gcc -E
6、编译
make
ls -l boa
-rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa
然后为生成的二进制文件boa瘦身
arm-softfloat-linux-gnu-strip boa
ls -l boa
-rwxr-xr-x 1 david david 61052 2009-05-31 13:51 boa
可以发现boa的大小前后差距很大这为我们节省了很大的空间
7、Boa的配置
这一步的工作也在电脑主机上完成。
在boa-0.94.13目录下已有一个示例boa.conf,可以在其基础上进行修改。如下:
#vi boa.conf
(1)Group的修改
修改 Group nogroup
为 Group 0
(2)user的修改
修改 User nobody
为 User 0
(3)ScriptAlias的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
为 ScriptAlias /cgi-bin/ /www/cgi-bin/
(5)DoucmentRoot的修改
修改DoucmentRoot /var/www
为DoucmentRoot /www
(6)ServerName的设置
修改#ServerName www.your.org.here
为 ServerName www.your.org.here
否则会出现错误“gethostbyname::No such file or directory”
(7)AccessLog修改
修改AccessLog /var/log/boa/access_log
为#AccessLog /var/log/boa/access_log
否则会出现错误提示:“unable to dup2 the error log: Bad file descriptor”
(8)以下配置和boa.conf的配置有关,都是在ARM根文件系统中创建
以下步骤在开发板上进行:
创建目录/etc/boa并且把boa 和 boa.conf拷贝到这个目录下
mkdir /etc/boa
创建HTML文档的主目录/www
mkdir /www
创建CGI脚本所在录 /www/cgi-bin
mkdir /www/cgi-bin
以下步骤在ubuntu下进行:
将boa.conf拷贝到开发板根文件系统的/etc/boa下
#cp boa.conf /source/rootfs/etc/boa
将boa拷贝到开发板根文件系统的/etc/boa下
#cp src/boa /source/rootfs/etc/boa
将ubuntu下/etc/mime.types拷贝到开发板根文件系统的/etc下
#cp /etc/mime.types /source/rootfs/etc
将你的主页index.html拷贝到www目录下
8、测试
打开一个浏览器输入开发板ip看看效果
OK
分享到:
相关推荐
如果移植到其他平台需要修改Makefile 5. 编译、创建配置文件 source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi ./configure --prefix=/home/alientek/tools/boa/...
boa服务器在arm2410上的移植
第二节:QT4.7.0 在ARM平台移植 第三节:boa web服务器在PC上移植 第四节:boa web服务器在S3C2440开发板上移植 第五节:boa移植过程中出现的问题 第六节:sqlite-3.7.6.2在PC及S3C2440平台移植 第七节:ffmpeg...
arm开发板移植boa服务器,6410,2440 都可用
BOA服务器在ARM板上的移植,cgi与boa介绍
嵌入式web服务器支持CGI编程 移植到ARM板上修改权限 chmod +x boa 再输入 # boa & 后台运行
说明:Boa服务器的移植可分成两部分,一个是在x86平台上移植,即在虚拟机的linux下,另一个是在arm平台上移植,即在开发板上的linux下,本手册的前四步,都是在虚拟机上做移植,第五步是移植到发开板上。
移植BOA服务器到开发板,自己整理好的,需要的就下载吧。
BOA在ARM上的移植
详细的移植过程和移植错误解决,我自己有动手验证过,尽情的享用吧
移植Boa Web服务器到ARM-Linux&mipsel-linux系统的有关资料
3. Qtopia-4.2.4手机平台在ARM上移植 第二十三讲 Qt应用程序的开发 1. Qt编程入门,使用Qt助手 2. 元对象编译器介绍 3. 信号和槽机制 4. Qt应用开发实例 第十部分 综合项目实战 第二十四讲 智能网络家居系统制作(后...
基于ARM9的嵌入式Linux移植
8.移植Boa Web 服务器 9.移植网络摄像头 10.移植Madplay 音频播放器 11.ARM MPlayer 移植 12.AT91SAM 芯片的启动过程 附录1:安装VMWARE+READHAT9 环境 附录2:如何安装虚拟工具和网络设置
包含初学ARM时的交叉编译环境的配置,数据库SQLite3的交叉编译与移植,Web服务器BOA的交叉编译与移植,嵌入式CGI编程和ARM串口编程。及其相关出现问题解决方法。程序代码纯属原创。
随着嵌入式技术的发展和高速宽带网络的普及, 利用网络实现远程监控已为人们广泛接受, 嵌入式网络监控技术正是在此条件下逐步发展成熟起来的. 用户使用Web 浏览器, 通过以太网远程访问内置Web 服务器的监控摄像机, ...
我是在uclinux下移植的boa。uclinux跑通后,要看看网卡有没有通,用板子ping主机或者主机ping板子都是可以的。如果这个不通的话,后面就没办法做了。 我的网卡是rtl8019。因为我的uboot调通了网卡,我只是在编译...
开发平台:ubuntu 8.04目标平台:S3c2410开发工具:arm?交叉工具链版本3.4.5??boa版本:boa-0.94.13.tar.gz一、源码,生成makefile1.?源码:2.?拷贝到?/opt?目录下3.解压?tar zxvf boa-0.94.13.tar.tar4.cd boa-...
linux交叉编译好的boa软件,可直接移植到嵌入式开发板上运行
linux2.6.31移植 特别详细,最好配合郭天祥arm视频教程