`
amazontzy
  • 浏览: 26439 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

boa在ARM平台的移植

阅读更多
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
分享到:
评论

相关推荐

    嵌入式boa服务器arm平台移植源码

    如果移植到其他平台需要修改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服务器的移植.doc

    boa服务器支持多种平台,包括Windows、Linux和Unix等,且具有良好的可移植性和可扩展性。 在嵌入式系统中,boa服务器可以作为一个轻便的Web服务器,提供了一个灵活的解决方案来满足特定的应用需求。例如,在智能...

    webserver CGI 服务器搭建 boa-0.94.13-arm.rar

    "webserver CGI 服务器搭建 boa-0.94.13-arm.rar" 提供了在ARM架构上搭建Boa Web服务器的资源,包括源代码、移植教程以及CGI(Common Gateway Interface)编程的相关文档。下面我们将详细探讨这些知识点。 **Boa ...

    在hi3516A上移植好的boa嵌入式web服务器代码

    boa嵌入式Web服务器在Hi3516A上的移植是一项关键的技术工作,涉及到硬件平台与软件系统的深度融合。Hi3516A是一款基于ARM Cortex-M3架构的高性能、低功耗芯片,常用于视频监控、智能硬件等领域。移植Boa Web服务器到...

    移植BOA服务器到开发板

    移植BOA服务器到开发板是将该服务器软件安装并运行在特定硬件平台上的过程,这通常涉及到编译、配置以及适应不同操作系统的需求。 在移植过程中,首要步骤是获取BOA服务器的源代码。这里提供的`boa-0.94.13.tar.gz`...

    Boa.rar_EM_arm boa web server_boa_linux boa

    本文将详细解析如何将Boa Web服务器移植到ARM-Linux和mipsel-linux这两种不同的处理器架构上。 一、Boa Web服务器简介 Boa是一款开源的、非线程的、单进程Web服务器,它设计的目标是简洁和稳定,而不是追求高性能。...

    boa web服务器 ARM9下 linux编译移植成功

    嵌入式web服务器支持CGI编程 移植到ARM板上修改权限 chmod +x boa 再输入 # boa & 后台运行

    boa服务器移植

    这包括安装交叉编译工具链,如arm-linux-gcc或arm-none-eabi-gcc,确保编译出的代码能在目标平台上运行。 3. **配置Boa**:配置Boa以适应S3C6410的硬件特性,如内存大小、网络接口等。这通常通过修改源代码中的配置...

    web服务器boa的移植方法

    ### Web服务器Boa的移植方法详解 #### 一、Boa简介 Boa是一种轻量级的Web服务器软件,以其小体积(仅约60KB)而闻名于世。作为一个单任务Web服务器,Boa专注于顺序处理用户请求,并不通过创建新进程的方式来处理...

    boa服务器移植doc

    ### Boa服务器移植知识点 #### 一、Boa服务器简介与目录结构 ...以上是关于 Boa 服务器在不同平台上的移植方法与步骤,通过对配置文件的调整和资源文件的正确部署,可以实现 Boa 服务器的有效迁移与应用。

    boa移植到android平台

    ### Boa Web Server 移植至 Android 平台详解 #### 一、Boa简介 Boa是一款轻量级的Web服务器,适用于嵌入式系统。由于其小巧、高效的特性,在资源有限的环境下表现尤为突出。为了拓宽Boa的应用场景,将其移植到...

    BOA服务器的移植和简单调试

    在本文中,我们将深入探讨如何将BOA服务器移植到特定的硬件平台,并进行简单的调试,以便于在不同环境中顺利运行。 首先,移植BOA服务器涉及的主要步骤是编译源代码。你需要从官方网站www.boa.org下载最新版本的...

    boa在嵌入式Linux上的移植

    ### boa在嵌入式Linux上的移植 #### 一、简介 Boa 是一款轻量级 Web 服务器,因其体积小(约60KB)而受到欢迎。它适用于资源有限的嵌入式系统,并且设计注重速度与安全性。尽管 Boa 不能通过 fork 出新进程的方式...

    嵌入式web服务器boa的移植及其应用.doc

    嵌入式web服务器boa的移植及其应用是指在嵌入式系统中移植和应用boa web服务器的技术研究。boa是一种轻量级的web服务器,可以运行在嵌入式系统中,以满足各种网络应用的需求。本文研究了基于ARM的嵌入式Linux开发,...

Global site tag (gtag.js) - Google Analytics