移植BOA服务器到开发板
移植BOA 服务器到GEC210 开发板
开发平台
主机:VMWare--Ubuntu 10.04 LTS
开发板:GEC210 / linux-2.6.35.7
编译器:arm-linux-gcc-4.5.1
所需软件:boa-0.94.13.tar.gz
下载:http://www.boa.org/boa-0.94.13.tar.gz
第一部分 移植步骤
BOA 服务程序编译
1、设置好交叉编译工具链路径:
export PATH=/usr/local/arm/4.5.1/bin:$PATH
2、解压下载好的BOA 压缩包
tar zxvf boa-0.94.13.tar.bz2
3、进入解压后的目录
cd boa-0.94.13
4、进入BOA 源码包的src 目录(下面操作均在该目录下进行)
cd src
5、利用configure 工具配置生成Makefile 文件
./configure
6、修改生成的Makefile 文件(设置交叉编译器)
将
CC = gcc
CPP = gcc –E
修改为:
CC=arm-linux-gcc
CPP=arm-linux-gcc –E
7、修改defines.h 文件
将#define SERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/gec/web”
该处定义的是WEB 服务器的文件根目录,跟boa.conf 文件中的DocumentRoot 一致即可。
8、修改compat.h 文件
将#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
防止在make 时出现如下错误提示:
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
9、修改boa.c 文件
注释掉下面两句话:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”);
}
#endif
否则会出现错误: getpwuid: No such file or directory
注释掉下面语句:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
否则会出现错误: - icky Linux kernel bug!: No such file or directory
10、编译boa
make
至此,在src 目录中将得到交叉编译后的boa 程序,可以使用以下方法缩小程序的体积
arm-linux-strip boa //去掉相关调试信息,对交叉编译生成的boa 程序瘦身。
编译错误(1):
yacc -d boa_grammar.y
make: yacc:命令未找到
make: *** [y.tab.c]
解决办法:#apt-get install bison,安装完成后要再一次执行 #./configure
再执行 #make
编译错误(2):
y.tab.c: 在函数‘yyparse’中:
y.tab.c:1319:7: 警告:隐式声明函数‘yylex’
lex boa_lexer
make: lex:命令未找到
make: *** [lex.yy.c] 错误127
解决办法:#yum install flex
安装完成,再#make就可以了
第二部分 BOA 服务器运行环境搭建
一、在解压的boa 源码目录下有个boa.conf 文件,根据GEC210 根文件系统的设计,对它进行如下修改:
1、修改用户与用户组信
1)、User 的修改:
将User nobody 修改为User 0
2)、Group 的修改:
将Group nogroup 修改为Group 0
在根文件系统中的/etc/passwd 文件中没有nobody 用户,所以设成0。
在根文件系统中的/etc/group 文件中没有nogroup 组,所以设成0。
2、相关日志文件存放位置项,保留将保存日志文件,根据需要可以选择是否注释掉
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_log
3、打开ServerName 的设置:
将#ServerName www.your.org.here 前面的#号去掉,该项默认为未打开,执
行Boa 会异常退出,提示“gethostbyname::No such file or directory”,所以
须打开。
4、将DocumentRoot /var/www 修改为:DocumentRoot /gec/web,不然会提示错误
GET / HTTP/1.1" ("/var/www/"): document open: No such file or directory
5、将DirectoryMaker /usr/lib/boa/boa_indexer 注释掉
6、将MimeTypes /etc/mime.types 修改为:MimeTypes /gec/web/mime.types
7、将DefaultType text/plain 修改为:DefaultType text/html。
8、将Alias /doc /usr/doc 注释掉。
9、SccriptAlias 的设置:
将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改为
ScriptAlias /cgi-bin/ /gec/web/cgi-bin/
至此,BOA 服务器配置已经完成,接下来完善根文件系统即可在GEC210 上运行。
二、完善根文件系统
1、在开发板的根文件系统根目录创建必要的BOA 服务器运行目录:
在根文件系统的根目录下创建/gec/web 目录:
cd /root/rootfs
mkdir -p gec/web
进入到创建好的web 目录下,创建cgi-bin 目录:
mkdir cgi-bin
2、把交叉编译生成的boa 程序和配置好的boa.conf 文件及主机下的/etc/mime.types 文件
都复制到板上的/gec/web 目录下,并在该目录下创建一文件index.html,文件内容可以参
考如下:
<html>
<head>
<title>BOA TEST</title>
</head>
<body>
<h1>BOA TEST</h1>
</body>
</html>
3、进入到板上的/gec/web 目录下,执行./boa,可以看到如下启动信息:
在主机上启动浏览器,输入URL 为http://192.168.0.23,访问板上的BOA 服务,效果如下:

4、测试完静态页面后,接下来测试CGI 脚本文件:
在主机上创建一文件test.c,文件内容如下:
include <stdio.h>
int main(void)
{
printf("Contenttype:text/html\n\n");
printf("<html>\n");
printf("<head><title>BOA CGI TEST</title></head>\n");
printf("<body>\n");
printf("<h1>BOA CGI TEST</h1>\n");
printf("</body>\n");
printf("</html>\n");
return 0;
}
编译:arm-linux-gcc test.c –o test.cgi
然后用交叉编译工具链编译,将得到的test.cgi 文件复制到板上的/gec/web/cgi-bin 目录下:
在浏览器输入http://192.168.0.23/cgi-bin/test.cgi,可以看到如下效果:
相关文档及文件下载链接: http://download.csdn.net/detail/klcf0220/5888169
另外还有一份关于S3C2440开发板的:http://download.csdn.net/detail/klcf0220/5888157
移植BOA服务器到开发板的更多相关文章
- linux(TINY6410)下移植boa服务器
今天在tiny6410上移植了boa服务器,中间遇到了一些小问题.当时也及时解决了. 第一步:boa的编译 在www.boa.org下载Boa的压缩包 我这里用的是 boa-0.94.13.tar. ...
- live555 交叉编译移植到海思开发板
本文章参考了.http://blog.csdn.net/lawishere/article/details/8182952,写了hi3518的配置说明.特此感谢 https://blog.csdn.n ...
- 物联网操作系统HelloX已成功移植到MinnowBoard MAX开发板上
在HelloX开发团队的努力下,以及Winzent Tech公司(总部在瑞典斯德哥尔摩)的支持下,HelloX最新版本V1.78已成功移植到MinnowBoard MAX开发板上.相关源代码已经发布到 ...
- 移植Mplayer到OK6410开发板
移植Mplayer到OK6410开发板 作者:vasage 项目需要,需要将Mplayer移植到开发板上,所以今天花了一下下午成功移植,其中参考很多文档,后发现许多文档陈旧,些许文档有少量错误,所以这 ...
- 在嵌入式Linux系统(OK6410)中移植Boa 服务器
OK6410的Boa服务器移植: <一> Boa的编译 1. 从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz. 2. 解压:tar xzf ...
- ubuntu11.10(TQ210)下移植boa服务器
平台:ubuntu11.10 一.下载源码包www.boa.org boa-0.94.13.tar.gz 二.解压,在其src目录下生产makefile #tar xvfz boa-0.94.1 ...
- Linux移植到自己的开发板(二)UBOOT和Linux
@ 目录 一.uboot跳转到Linux 二. Linux内核启动之解压阶段 三. Linux内核启动之汇编阶段 插曲:关于Kconfig和Makefile 四. Linux内核启动之C语言阶段 五. ...
- Linux移植到自己的开发板(三)根文件系统
@ 目录 1 Linux内核配置 2 ramdisk制作 3 busybox配置 4 genext2fs生成镜像 为了快速调试,采用ramdisk进行根文件系统测试.要使内核能挂载ramdisk根文件 ...
- (原创)AP6212移植到AM335X自主开发板上
转载请指明出处. 参考<关于AM335X移植SDIO WIFI的简易教程> http://www.deyisupport.com/question_answer/dsp_arm/sitar ...
随机推荐
- 【洛谷P4513】小白逛公园
题目大意:维护动态带修改最大子段和. 题解:线段树额外维护合并最优解时需要的信息. 代码如下 #include <bits/stdc++.h> using namespace std; c ...
- 前端基础之html(一)
https://www.cnblogs.com/haiyan123/p/7516060.html 一.初始html 1.web服务本质 import socket sock=socket.socket ...
- 走进JVM【二】理解JVM内存区域
引言 对于C++程序员,内存分配与回收的处理一直是令人头疼的问题.Java由于自身的自动内存管理机制,使得管理内存变得非常轻松,不容易出现内存泄漏,溢出的问题. 不容易不代表不会出现问题,一旦内存泄漏 ...
- 2018.9青岛网络预选赛(A)
传送门:Problem A https://www.cnblogs.com/violet-acmer/p/9664805.html 题意: 求m个PERFECTs中最多有多少个连续的PERFECT和最 ...
- Python介绍以及安装
Python介绍以及安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 借用我的导师的一句话:当你看到这篇文章的时候,那么恭喜你,你已经是踏入了开发的大门!欢迎加入:高级运维工程师 ...
- Linux中如何安装RAR
在Windows下的winrar几乎一统压缩软件的市场占有率,winrar只是RAR在Windows环境下的图形界面而已,核心功能还是RAR,那么如何在Linux中安装RAR呢? 1.下载RAR下载地 ...
- 读取Easy UI的DATa grid里面的所有数据
目前我知道的有两种方法: 1.读取行数,循环读出 $("#btnEcxel").click(function () { var rows = $('#tbVehicleList') ...
- 学习windows编程 day2 之滚动条使用
相关函数: setscrollrange,setscrollpos,getscrollrange,getscrollpos 使用滚动条时我们需要进行的操作: 1.初始化滚动条范围和位置 在窗口创建时W ...
- UESTC - 1324 卿学姐与公主
题目链接 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中. 英勇的卿学姐拔出利刃冲向了拯救公主的道路. 走过了荒野,翻越了 ...
- bean之间的继承和依赖关系
继承Bean配置 Spring允许继承bean的配置,被继承的bean称为父bean,继承这个父Bean的Bean称为子Bean 子Bean从父Bean中继承配置,包括Bean的属性配置 子Bean可 ...