当前位置:首页 > 嵌入式web服务器boa移植到mini2440开发板详细过程
信盈达 嵌入式web服务器boa移植到mini2440开发板详细过程 陈工
嵌入式web服务器boa移植到mini2440开发板详细过程
1、概述
为了和开发板上用的httpd服务,我选用的服务器是boa,boa已经没有更新了,但是现在的应用仍然很大,当然更先进的AppWeb当然是更好的选择,不过学习应先从简单的入手。
本教程使用环境是Red Hat Enterprise Linux 6,交叉编译工具是arm-linux-gcc4.3.2,开发板是mini2440,开发板内核是2.6.32.
2、到http://www.boa.org/下载源码,boa最终版是0.94.13
3、 解压文件 1)解压
[root@localhostopen_source]# ls boa-0.94.13.tar.gz
[root@localhostopen_source]# tar -xvfboa-0.94.13.tar.gz -C ./ [root@localhostopen_source]# ls boa-0.94.13 boa-0.94.13.tar.gz
2)为了和X86版本区别把解压出来的文件夹boa-0.94.13重新命名为boa-0.94.13_arm [root@localhostopen_source]# mv boa-0.94.13 boa-0.94.13_arm
4. 编译前修改工作(主要是因为boa太久没有更新,目前相对说比较老,要修改下才能通过编译)
1)修改vicompat.h文件
[root@localhostopen_source]# ls
boa-0.94.13_arm boa-0.94.13.tar.gz
[root@localhostopen_source]# cd boa-0.94.13_arm/src/ [root@localhostsrc]# vicompat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
即将120行和126行的foo##->tm_gmtoff改为foo->tm_gmtoff
否则会出现错误:
util.c:100:1: error: pasting \错误 1
2)修改src/log.c 注释掉
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE(\ }
1 / 1
信盈达 嵌入式web服务器boa移植到mini2440开发板详细过程 陈工
为: /*
if (dup2(error_log, STDERR_FILENO) == -1) {
DIE(\} */
否则会出现错误:
log.c:73 unable to dup2 the error log:bad file descriptor
3)修改src/boa.c 注释掉下面两句话: if (passwdbuf == NULL) {
DIE(”getpwuid”); }
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”); } 为 #if 0
if (passwdbuf == NULL) { DIE(”getpwuid”); }
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE(”initgroups”); }
#endif
否则会出现错误:boa.c:211 - getpwuid: No such file or directory。
注释掉下面语句: if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”); }
2 / 2
信盈达 嵌入式web服务器boa移植到mini2440开发板详细过程 陈工
为 #if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”); }
#endif
否则会出现问题:boa.c:228 - icky Linux kernel bug!: No such file or directory
5、 配置boa服务器,编辑boa-0.94.13目录下的boa.conf文件,按如下配置: 修改: User nobody (48行) 为: User 0 #用户 修改: Group nogroup(49行) 为:
Group 0 #用户组
修改Group的参数为0是因为系统中没有nogroup组,如果你没有nobody用户,那么User nobody也要做相应修改(修改成自己的用户名亦可)。其它采用默认设置。如有必要,可以参看<附录>中的参数说明。
ServerName chenzhifa #(94行)服务器名字,这里默认是注释掉的,一定要去掉注释 DocumentRoot /var/www #(111行)为HTML文件目录 ScriptAlias /cgi-bin/ /var/www/cgi-bin/ #(193行)CGI程序目录
注意ScriptAlias项ScriptAlias /cgi-bin/ /var/www/cgi-bin是错的, 要改为ScriptAlias /cgi-bin/ /var/www/cgi-bin/就相差一个 /,
否则测试cgi程序时,在浏览器地址栏中输入192.168.1.99/cgi-bin/cgi-hello.cgi会出现以下错误: The requested URL /cgi-bin/cgi-hell.cgiwas not found on this server.
6. 生成Makefile文件,并修改其中的交叉编译器 [root@localhost boa-0.94.13_arm]# cdsrc/ [root@localhostsrc]# ./configure [root@localhostsrc]# viMakefile
修改编译器:第31行,32行 31 CC = gcc 32 CPP = gcc –E 为,保存并退出。
7. 编译:
3 / 3
信盈达 嵌入式web服务器boa移植到mini2440开发板详细过程 陈工
[root@localhostsrc]# make
8. 复制编译得到的可执行文件到根文件系统:
[root@localhostsrc]#cp boa /opt/s3c2440/root_nfs/bin/
9. 修改boa服务器程序权限(给最大权限):
[root@localhost boa-0.94.13_arm]# chmod 777 /opt/s3c2440/root_nfs/var/www/cgi-bin/cgi-hello.cgi
10. 在根文件系统中创建服务器目录(和boa中的相同) [root@localhostsrc]# mkdir /opt/s3c2440/root_nfs/var
[root@localhostsrc]# mkdir /opt/s3c2440/root_nfs/var/www
[root@localhostsrc]# mkdir /opt/s3c2440/root_nfs/var/www/cgi-bin
11. 复制配置文件到根文件系统中/etc/boa/目录中,注意boa目录要自动先创建 [root@localhostsrc]# cd ../
[root@localhost boa-0.94.13_arm]# mkdir /opt/s3c2440/root_nfs/etc/boa
[root@localhost boa-0.94.13_arm]# cpboa.conf /opt/s3c2440/root_nfs/etc/boa/
12. 复制mime.types文件到根文件系统的中etc文件夹中。(mime.types为x86主机/etc/目录下的文件,里面内容是Linux下文件类型对应的处理程序)
[root@localhost boa-0.94.13_arm]# cp /etc/mime.types /opt/s3c2440/root_nfs/etc/
13. 创建boa日志存放目录和日志文件,需要手动创建(路径要和boa中的配置相同) [root@localhost boa-0.94.13_arm]# mkdir /opt/s3c2440/root_nfs/var/log
[root@localhost boa-0.94.13_arm]# mkdir /opt/s3c2440/root_nfs/var/log/boa
[root@localhost boa-0.94.13_arm]# touch /opt/s3c2440/root_nfs/var/log/boa/access_log
14. 编译测试程序,cgi-hello.c(本人要当前目录中建了一个test文件夹,其中存放了测试的cgi-hello.c文件) [root@localhost boa-0.94.13_arm]# arm-linux-gcc -o test/cgi-hello.cgi test/cgi-hello.c test/cgi-hello.c: In function 'main':
test/cgi-hello.c:5: warning: return type of 'main' is not 'int'
15. 复制生成的cgi测试程序到根文件系统中存放boa服务器目录下的cgi-bin目录下(cgi程序全部要放在这个目录下):
[root@localhost boa-0.94.13_arm]# cp test/cgi-hello.cgi /opt/s3c2440/root_nfs/var/www/cgi-bin/
附cgi-hello.c源码: #include
void main() {
printf(\注意这里要两个换行符,这是HTML的规定 printf(\
4 / 4
共分享92篇相关文档