工作需要,移植web服务器到摄像头中,查找资料,借鉴了几位前辈的文章自己弄了一下,还挺顺利的呦~


系统:centos 6.4 64bit

工具:arm-hisiv100nptl-linux-gcc


1、交叉编译

1)从www.boa.org下载Boa源码,版本0.94.13;

2)解压进入源码目录的src/
# tar xzf boa-0.94.13.tar.gz
# cd boa-0.94.13/src
3)生成Makefile文件
# ./configure
4)修改Makefile文件:CC=gcc改成CC = arm-hisiv100nptl-linux-gcc,再找到CPP = gcc –E,
将其改成CPP = arm-hisiv100nptl-linux-gcc –E,保存退出。
5)运行make进行编译,在src/目录下,得到可执行程序boa


2、编译中遇到的错误
# make
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 src/compat.h

#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
保存退出,然后make clean、make


3、在目标版上运行boa

上传boa-0.94.13/src/下的boa到目标版;

上传boa-0.94.13/下的boa.conf(先按需求设置完)到目标版/etc/boa/下;

上传boa-0.94.13/下的mime.types到目标板/etc/下;

在目标版上创建目录/var/www(配置默认DocumentRoot是这个,可以自己改),里面放供下载的文件;

运行./boa;

(此处报错boa.c:228 - icky Linux kernel bug!: :

解决办法: 修改源码中的src/boa.c

注释掉下面语句:

  if(setuid(0) != -1) {

  DIE(”icky Linux kernel bug!”);

  }

重新make,上传boa)