工作需要,移植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/src3)生成Makefile文件# ./configure4)修改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.cutil.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)