参考两篇帖子
http://blog.csdn.net/bull_liu/article/details/7486298 boa移植
http://blog.csdn.net/wang_walfred/article/details/46728499 cgi+html测试文档
1.下载源码:
下载网址,但实际上下载的包为boa-0.94.13.tar.tar
2.解压源码包:
将源码拷贝到/usr/src目录下,
#tar -xvf boa-0.94.13.tar.tar
之后,会在/usr/src目录下生成boa-0.94.13目录。
3.修改源码:
①修改boa-0.94.13/src目录下的boa.c源文件,大概在225行,注释掉如下语句:
if (setuid(0) != -1){
DIE("icky kernel bug!");
}
注释掉的具体原因还没有弄懂!正在研究中……不注释无法使用post方法。
②修改boa-0.94.13/src目录下的compat.h头文件,大概在120行,修改如下:
将foo##->tm_gmtoff中的##去掉即可,不然在编译时会出现:
util.c:100:1:error:pasting "t" and "->"does not give a valid prearocessing token.
具体原因可能是使用了较高版本的编译器。
4.执行configure:
在boa-0.94.13/src目录下执行configure:
#./configure
之后会生成Makefile文件
5.修改Makefile文件:
修改boa-0.94.13/src目录下的Makefile文件,修改如下:(前提是已配置好交叉编译工具链)
将CC = gcc修改为CC=arm-none-linux-gnueabi-gcc
将CPP = gcc -E 修改为CPP=arm-none-linux-gnueabi-gcc -E
6.执行make:
在boa-0.94.13/src目录下执行make:
#make
一般make不过
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# sudo 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#sudo apt-get install flex之后会在boa-0.94.13/src目录下生成boa可执行文件,即可以在ARM板子上运行的程序。
7.在开发板上创建执行目录:
#mkdir /var/www (如果有了,就省略)
#mkdir /var/www/cgi-bin
#mkdir /var/log
#mkdir /var/log/boa
#mkdir /etc/boa
将在boa-0.94.13/目录下的boa.conf文件拷贝到开发板/etc/boa目录下;
将宿主机中/etc/mime.types文件拷贝到开发板/etc目录下;
将boa-0.94.13/src目录下的boa拷贝到开发板/bin目录下(或其他默认系统路径);
8.修改boa.conf文件:
①修改48行:User nobody 为 User root
修改48行:User group 为 User root
②修改193行:ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 为 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
至此,boa移植完毕。
1、编写HelloworldCGI.c程序
[tekkamanninja@Tekkaman-Ninja source]$ vi helloworldCGI.c
#include#include int main(void){ printf("Content-type: text/html\n\n"); printf("\n"); printf(" CGI Output \n"); printf("\n"); printf("Hello,world.
\n"); printf("\n"); printf("\n"); exit(0);}交叉编译arm-none-linux-gnueabi-gcc hellowworld.c -o helloworld
(主程序的程序开头一定要用Tab,而不是空格,不然编译可能不通过)
放到/var/www/cgi-bin/下
浏览器输入
网页出现 Hello,world. 调试成功!