二、解压: tar xzvf boa-0.94.13.tar.gz
三、编译:
# cd boa-0.94.13/src
# ./configure
生成Makefile文件,对Makefile文件的31行做以下的修改:
CC = arm-linux-gcc
CPP = arm-linux-gcc -E
# make
将src目录下编译生成的boa拷贝到开发板根目录下的/usr/bin
四、配置boa
1. 从boa-0.94.13目录下将boa.conf拷贝到开发板下的/etc目录
2. User nobody不用修改,将Group nogroup修改成Group 0。同时将linux主机下的/etc/passwd、/etc/group文件拷贝到开发板/etc目录,内容可根据自己的需要删改
3. ScriptAlias /cgi-bin /usr/lib/cgi-bin 修改成 ScriptAlias /cgi-bin /var/www/cgi-bin/
4. 在开发板上创建/var/log/boa/error_log (错误日志文件)/var/log/boa/access_log (访问日志文件)
5. 将linux主机/etc/mime.types文件拷贝到开发板目录/etc
6. 在开发板上创建/var/www(存放HTML文件) 在/var/www/cgi-bin目录下存放CGI脚本
注:其它选项默认即可
五、测试
在开发板上运行./boa,在linux主机上输入开发板ip地址即可访问目录/var/www中的HTML页面。注意,此时开发板与linux主机用网线相连,且处于同一网段下。
ARM开发板:192.168.1.17
linux主机:192.168.1.19
编译中遇到的问题
编译一个linux下的c系统,包含词法和语法分析模块,Linux上用bison和flex。
yacc是一个文法分析器的生成器,bison即是yacc的GNU版本.Lex和YACC是用于构造词法分析机和语法解释器的工具,利用Lex和YACC你可以轻松的构造一个语法解释器。
一开始make
错误1:
debian:/home/a/boa-0.94.13/src# make
yacc -d boa_grammar.y
make: yacc: Command not found
make: *** [y.tab.c] Error 127
解决方法:
debian:/home/a/boa-0.94.13/src# apt-get install bison
错误2:
debian:/home/a/boa-0.94.13/src# make
lex boa_lexer.l
make: lex: Command not found
make: *** [lex.yy.c] Error 127
解决方法:
debian:/home/a/boa-0.94.13/src# apt-get install flex
错误3:
debian:/home/a/sss/boa-0.94.13/src# 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
解决方法:
修改 src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
然后
debian:/home/a/sss/boa-0.94.13/src# make clean
debian:/home/a/sss/boa-0.94.13/src# make
出现:
debian:/home/a/sss/boa-0.94.13/src# make
make: Nothing to be done for `all'.
说明make没有检查到需要编译的东西,库或者应用程序已经编译好了。
make主要检查的是时间戳, 只要target比依赖的文件时间靠后它就认为不需要编译