官网:http://www.boa.org/

BOA 服务器是一个小巧高效的web服务器,是一个运行于unix或linux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高

配置

boa-0.94.13 # ./configure

修改Makefile

CC = arm-linux-gcc
CPP = arm-linux-gcc -E

编译

boa-0.94.13 # make

出现如下错误

出现错误:

yacc  -d boa_grammar.y
make: yacc: Command not found
make: *** [y.tab.c] Error 127

解决办法:

# sudo apt-get install bison

出现错误:

lex  boa_lexer.l
make: lex: Command not found
make: *** [lex.yy.c] Error 127

解决办法:

# sudo apt-get install flex

出现错误:

arm-none-eabi-gcc  -g -O2 -pipe -Wall -I.   -c -o alias.o alias.c
In file included from alias.c:26:0:
boa.h:41:19: fatal error: netdb.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'alias.o' failed
make: *** [alias.o] Error 1

解决办法:

//将交叉编译工具链换成
gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)

出现错误:

arm-linux-gcc -g -O2 -pipe -Wall -I.   -c -o util.o util.c
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1

解决办法:

# vi compat.h //修改120行

#ifdef HAVE_TM_GMTOFF
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
#else

制作cgi页面

交叉编译出一个cig脚本,供boa使用。boa默认支持cig格式的网页显示

cgic205 # ls
capture capture.c capture.o cgic.c cgic.h cgic.html cgic.o cgictest.c cgictest.cgi
cgictest.o libcgic.a license.txt Makefile readme.txt support.txt

移植

boa-0.94.13 # cp src/boa /rootfs/sbin
boa-0.94.13 # cp boa.conf /rootfs/etc/boa
boa-0.94.13 # cp cgictest.cgi /rootfs/var/www/cgi-bin/
boa-0.94.13 # cp favicon.ico /rootfs/var/www/

开发板测试

# /sbin/boa

出现如下错误

出现错误:

gethostbyname:: No such file or directory

解决办法:

//取消#注释
# vi boa.conf ServerName www.your.org.here

出现错误:

boa.c:211 - getpwuid: No such file or directory

解决办法:

//注释掉以下代码
# vi boa.c #if 0
struct passwd *passwdbuf;
passwdbuf = getpwuid(server_uid);
if (passwdbuf == NULL) {
DIE("getpwuid");
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE("initgroups");
}
#endif

出现错误:

boa.c:228 - icky Linux kernel bug!: Success

解决办法:

//注释掉以下代码
# vi boa.c #if 0
if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}
#endif

成功启动

[01/Jan/2000:10:09:27 +0000] boa: server version Boa/0.94.13
[01/Jan/2000:10:09:27 +0000] boa: server built Sep 22 2018 at 05:23:16.
[01/Jan/2000:10:09:27 +0000] boa: starting server pid=909, port 80

客户端测试

浏览器输入 http://192.168.1.99/cgi-bin/cgictest.cgi 测试

boa移植 boa交叉编译的更多相关文章

  1. arm linux上的第一个应用程序 BOA移植

    1. 首先, linux在开发板上能跑起来了. 包括网络驱动也有了, ifconfig之后, 能看到在rcS里面设置的IP, 也能ping通windows主机了, 当然, 也要window关掉防火墙才 ...

  2. 移植BOA服务器到开发板

    移植BOA 服务器到GEC210 开发板 开发平台主机:VMWare--Ubuntu 10.04 LTS开发板:GEC210 / linux-2.6.35.7编译器:arm-linux-gcc-4.5 ...

  3. 嵌入式开发之web服务器---boa移植

    近段时间在做ti8148的编解码器又涉及到boa web服务器的移植.在移植到ARM开发板的过程中,遇到很多的问题.原先的自带thttpd 由于功能没有boa完善,比如在ubuntu下面的utf-8编 ...

  4. 在嵌入式Linux系统(OK6410)中移植Boa 服务器

    OK6410的Boa服务器移植: <一> Boa的编译 1. 从 www.boa.org 下载 Boa 服务器的最新版:boa-0.94.13.tar.gz. 2. 解压:tar xzf ...

  5. ubuntu11.10(TQ210)下移植boa服务器

    平台:ubuntu11.10 一.下载源码包www.boa.org   boa-0.94.13.tar.gz 二.解压,在其src目录下生产makefile #tar xvfz  boa-0.94.1 ...

  6. linux(TINY6410)下移植boa服务器

    今天在tiny6410上移植了boa服务器,中间遇到了一些小问题.当时也及时解决了. 第一步:boa的编译 在www.boa.org下载Boa的压缩包  我这里用的是 boa-0.94.13.tar. ...

  7. boa移植

    1.交叉编译 2.复制文件 配置文件boa.conf 移动到/etc/boa/ 目录下 可执行文件boa移动到/usr/sbin/目录下 3.修改配置文件 4.将Linux系统上/etc/mime.t ...

  8. DM8168 IPNC Boa移植

    1.交叉编译openssL 下载openssL-1.0.0.tar.gz在虚拟机下进行交叉编译,生成libcrypto.a及libssl.a.将这两个文件复制到DVRRDK_03.00.00.00/b ...

  9. qt5 移植 交叉编译出现错误

    类似这样的错误,当时没有完整的记下来,undefined reference to `std::__detail::_List_node_base@GLIBCXX_3.4.10 当时是在编译qt5cl ...

随机推荐

  1. Python用openpyxl读写Excel

    openpyxl是一个用于读写Excel 2010 xlsx文件的python库.openpyxl官方文档:https://openpyxl.readthedocs.io/en/stable/ 一.安 ...

  2. 【JavaWeb】FreeMarker快速入门

    FreeMarker Freemarker是免费开源的模板引擎技术: Freemarker脚本为Freemarker Template Language: Freemarker提供了大量内建函数来简化 ...

  3. JavaScript判断是否是数字

    JavaScript判断是否是数字的几种方法 isNaN() /** * 判断是否是数字 */ function isNumber(value){ if(isNaN(value)){ return f ...

  4. [Go] gocron源码阅读-空接口类型interface{}

    gocron源代码中的Action那个地方,就是个空接口类型Action interface{},可以传递任意类型进去,这里是传了个函数进去 command := cli.Command{ Name: ...

  5. 【bzoj4559】[JLoi2016]成绩比较(dp+拉格朗日插值)

    bzoj 题意: 有\(n\)位同学,\(m\)门课. 一位同学在第\(i\)门课上面获得的分数上限为\(u_i\). 定义同学\(A\)碾压同学\(B\)为每一课\(A\)同学的成绩都不低于\(B\ ...

  6. 201571030332 扎西平措 《面向对象程序设计Java》第八周学习总结

    <面向对象程序设计Java>第八周学习总结   项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https: ...

  7. python线程类的start()和run()

    start()方法: 开始线程活动. 对每一个线程对象来说它只能被调用一次,它安排对象在一个另外的单独线程中调用run()方法,而非当前所处的线程,当该方法在同一个线程对象中被调用超过一次时,会引入R ...

  8. MongoDB概念认识(四)

    1. database 一个mongodb中可以建立多个数据库. MongoDB的默认数据库为"db",该数据库存储在data目录中. MongoDB的单个实例可以容纳多个独立的数 ...

  9. Dockerfil

    Dockerfile简介 dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像,另外,使用Dockerfile去构建镜像好比使用pom去构建ma ...

  10. 小程序-promise封装小程序的请求方法

    // 在utils-->base.js中,封装一个Base类,有一个axios方法 class Base{ constructor(){ } axios(method,url,data){ co ...