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. CXGRID用法(取行、列值;定位选中某行等等)[转]

    Delphi Cxgrid获取选中行列,排序规则,当前正在编辑的单元格内的值 cxGrid1DBTableView1.Controller.FocusedRowIndex 当前行号 cxGrid1DB ...

  2. 通过jmap查看jvm采用的垃圾收集器

    1  tomcat 的PID获得 ps -ef|grep tomcat [root@iZ2zeapch8kbaw4bxnz8vxZ tomcat7]# ps -ef|grep tomcat root ...

  3. java异常处理-finally中使用return和throw语句

    java异常语句中的finally块通常用来做资源释放操作,如关闭文件.关闭网络连接.关闭数据库连接等.正常情况下finally语句中不应该使用return语句也不应该抛出异常,以下讨论仅限于java ...

  4. NOI前训练日记

    向别人学习一波,记点流水帐.17.5.29开坑. 5.29 早晨看了道据说是树状数组优化DP的题(hdu5542),然后脑补了一个复杂度500^3的meet in the middle.然后死T... ...

  5. BZOJ3142 HNOI2013数列(组合数学)

    考虑差分序列.每个差分序列的贡献是n-差分序列的和,即枚举首项.将式子拆开即可得到n*mk-1-Σi*cnt(i),cnt(i)为i在所有差分序列中的出现次数之和.显然每一个数出现次数是相同的,所以c ...

  6. NOI2010~NOI2018选做

    [NOI2010] [NOI2010]海拔 高度只需要0/1,所以一个合法方案就是一个割,平面图求最小割. [NOI2010]航空管制 反序拓扑排序,每次取出第一类限制最大的放置,这样做答案不会更劣. ...

  7. win7下解决烦人的管理员权限问题

    禁不住诱惑,用上win7了.可是,对system下的文件进行编辑时候,老是碰到什么必须拥有管理员权限才能进行操作,删除文件或者文件夹也遇到一样的问题.我就纳闷了,我不就是超级管理员吗?我怎么就没有权限 ...

  8. AJAX实现无刷新登录

    最近学习了如何实现无刷新登录,大体的效果如下(界面比较丑,请自行忽略....): 点击登录按钮时弹出登录窗口,输入正确的用户名密码后点击登录则登录窗口关闭,状态改为当前用户名. 第一步: 首先弹出窗口 ...

  9. 《Linux内核设计与实现》第7章读书笔记

    第七章 链接 一. 链接的概念 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程.可以执行于编译.加载和运行时,由叫做链接器(可实现分离编译)的程序自动执行. 二.静态链接 为了创建静态 ...

  10. 20135319zl elf文件报告

    一. 查看资料 使用vim /usr/include/elf.h可以查看elf文件头 二. 找到.text hexeditor po 地址为0x32,即第51字节储存的是elf header最后一个域 ...