OK6410的Boa服务器移植:

<一> Boa的编译

1. 从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz。

2. 解压:tar xzf boa-0.94.13.tar.gz

3. 进入解压后的文件夹 boa-0.94.13内部的 src文件夹,对源文件进行如下修改

     由于arm-linux-gcc 编译器版本过高,对语法的支持有一些改变,所以需要修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
为: #define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
不然在编译的时候会提示如下错误:
util.c: : : pasting “t” and “->” does not give a valid preprocessing token make: [util.o] Error1
 将boa.c 文件225-227三行的文件注释掉
if (setuid() != -) {
DIE(”icky Linux kernel bug!”);
}

/*
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
*/ ,否则,但以root权限启动boa服务器的时候,会出现以下错误:boa.c: - icky Linux kernel bug!:

4. 然后生成Makefile:./configure

5. 修改生成的Makefile:默认生成的Makefile针对x86平台,我们的目标是针对嵌入式平台,所以需要修改编译器.

 更改Makefile的31行和32行:
CC = gcc
CPP = gcc -E
更改为
CC = arm-linux-gcc
CPP = arm-linux-gcc -E

更改Makefile

6. 在当前目录下编译Boa源文件: make

7. 将生成好的boa可执行文件去掉冗余信息: arm-linux-strip boa. 如下图为strip 前后boa的大小对比。

<二> 将Boa移植到OK6410中

1. 修改boa.conf配置文件:

 () 修改25行的port端口,用来设置服务器监听的端口:
# Port: The port Boa runs on. The default port for http servers is .
# If it is less than , the server must be started as root. Port
() 注释43行的监听IP地址:默认监听该主机上的所有IP地址
#Listen 192.68.0.5
() 修改53、54行的user和Group 启动的UID和GID,使其以root身份启动
# User: The name or UID the server should run as.
# Group: The group name or GID the server should run as. User root
Group root
() 修改116行的DocumentRoot地址,即客户端要显示的HTML页面存放位置
# DocumentRoot: The root directory of the HTML documents.
# Comment out to disable server non user files. DocumentRoot /usr/local/boa
() 修改输入网页输入主机IP时要显示的页面:这里设为index.html
# DirectoryIndex: Name of the file to use as a pre-written HTML
# directory index. Please MAKE AND USE THESE FILES. On the
# fly creation of directory indexes can be _slow_.
# Comment out to always use DirectoryMaker DirectoryIndex index.html
() 修改CGI程序存放的位置:以http://IP/cgi-bin/cginame 的方式运行cgi 程序时将在/usr/local/boa/cgi-bin 目录下寻找该程序
# ScriptAlias: Maps a virtual path to a directory for serving scripts
# Example: ScriptAlias /htbin/ /www/htbin/ ScriptAlias /cgi-bin/ /usr/local/boa/cgi-bin/

2. 将配置文件boa.conf 移动到OK6410的 /etc/boa/ 目录下。

3. 创建/var/log/boa/ 目录,这样Boa服务器启动时会在该目录下创建日志文件。

4. 将Linux系统上/etc/mime.types 文件复制到OK6410的/etc 目录下,否则Boa服务器启动不起来。

5. 将生成的boa文件移植到嵌入式板中的/sbin目录下并更改脚本文件 /etc/init.d/rcS, 新增一行: /sbin/boa ,确保boa服务器随系统上电自启动。

这里一定要注意:有时候boa服务器并不能随系统启动,运行 /sbin/boa 命令会提示:
gethostbyname:: Success
这种情况下要修改boa.conf 文件

#ServerName  www.your.org.here
 改为      
ServerName  www.your.org.here
即去掉注释即可

<三> 测试Boa服务器:

1. 静态页面测试:

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Boa 静态网页测试</title>
</head> <body>
<h1> Welcome to Boa sever! </h1>
</body>
</html>

2. CGI  程序测试:

 #include <stdio.h>
int main()
{
printf("Content-type: text/html\n\n");
printf("<html>\n");
printf("<head>\n");
printf("<title>CGI Output</title>\n");
printf("</head>\n"); printf("<body>");
printf("<h1> Hello, world. </h1>");
printf("</body>");
printf("</html>\n");
return 0;
}

至此,Boa服务器移植完成。

在嵌入式Linux系统(OK6410)中移植Boa 服务器的更多相关文章

  1. 基于s5pv210嵌入式linux系统sqlite3数据库移植

    基于s5pv210嵌入式linux系统sqlite3数据库移植 1.下载源码 http://www.sqlite.org/download.html 最新源码为3080100 2.解压 tar xvf ...

  2. (转)嵌入式linux系统开发过程中遇到的——volatile

    原文地址:http://blog.csdn.net/HumorRat/article/details/5631023 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持 ...

  3. 【课程分享】深入浅出嵌入式linux系统移植开发 (环境搭建、uboot的移植、嵌入式内核的配置与编译)

    深入浅出嵌入式linux系统移植开发 (环境搭建.uboot的移植.嵌入式内核的配置与编译) 亲爱的网友,我这里有套课程想和大家分享,假设对这个课程有兴趣的,能够加我的QQ2059055336和我联系 ...

  4. 嵌入式linux系统中,lsusb出现unable to initialize libusb: -99 解决办法 【转】

    转自:http://cpbest.blog.163.com/blog/static/41241519201111575726966/ libusb是linux系统中,提供给用户空间访问usb设备的AP ...

  5. 龙尚3G、4G模块嵌入式Linux系统使用说明【转】

    本文转载自;http://blog.csdn.net/zqixiao_09/article/details/52506812 驱动部分: 1.kernle/drivers/usb/serial/opt ...

  6. 嵌入式linux系统应用开发

    关于嵌入式系统   平时大家说的嵌入式其实范围比较广的,是一种软硬件可裁剪,以应用为中心开发的专用系统,硬件平台可以是单片机,或者以ARM系列的处理器.单片机一般直接裸奔程序,不过现在有了好多基于单片 ...

  7. 嵌入式Linux启动过程中的问题积累

    嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...

  8. ARM 开发板嵌入式linux系统与主机PC通过串口传输文件

    本文转载自http://useless20.blog.163.com/blog/static/237409982010227127576/ 嵌入式linux系统与主机通过串口传输文件 我想如果要从PC ...

  9. 浅析嵌入式Linux系统的构成和启动过程

    在我们的周围,大量的嵌入式设备都是基于Linux系统来构建的,嵌入式Linux与主机Linux相比有着自己的一些特点,本文就嵌入式Linux系统的构成和启动过程做一些总结. 一.嵌入式Linux系统构 ...

随机推荐

  1. 第五周PSP&进度条

    团队项目psp: 一.表格     C类型 C内容 S开始时间 E结束时间 I时间间隔 T净时间(mins) 预计花费时间(mins) 讨论 讨论用户界面 9:27 10:42 18 57 60 分析 ...

  2. Linux_Apache 安装

    1.下载依赖扩展 apr.apr-util.pcre(正则依赖) https://apr.apache.org/download.cgi#aprutil1 apr:http://mirrors.shu ...

  3. GS7 使用IPV6的数据库的注册方法

    1. 首先保证 应用服务器和数据库服务器能够互相ping通 可以创建一个 bat 文件里面放上如下内容进行连接. start ping fe80::b0d4:::f3c5 -t start ping ...

  4. [转帖]Beyond Compare如何进行二进制比较

    Beyond Compare如何进行二进制比较 http://www.beyondcompare.cc/jiqiao/erjinzhi-bijiao.html 在使用Beyond Compare软件比 ...

  5. 无法安装HAXM (VT-X is not turned on)

    安装HAXM的时候,VT-X is not turned on. 进入bios查看,已经启动了vt-x.上网搜索发现解决有一部分电脑是因为安装了Hyper-V,解决的方法: 管理员运行cmd,输入如下 ...

  6. multi thread for Java

    I try to do a testing for HashTable Sychronized behavior today. As an Sychronized Object, HashTable ...

  7. 这个网页用到了什么技术,<script>标签,还有双大括号{{}}是什么意思

    <#compress> <@override name="title">${brand.name}-商品</@override> <@ov ...

  8. Qt——常用控件样式

    下面是我设计.调整.修改的Qt控件样式,仅供参考. Github地址:https://github.com/ikongziming/QtDemo/tree/master/StyleSheetDemo ...

  9. BZOJ3309 DZY Loves Math(莫比乌斯反演+线性筛)

    一通正常的莫比乌斯反演后,我们只需要求出g(n)=Σf(d)*μ(n/d)的前缀和就好了. 考虑怎么求g(n).当然是打表啊.设n=∏piai,n/d=∏pibi .显然若存在bi>1则这个d没 ...

  10. 再谈MySql索引

    一.索引简介 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度. 索引分单列索引(主键索引.唯一索引.普通索引)和组合索引.单列索引,即一个索引只包含单个列 ...