2013年(16)
分类: 嵌入式
2013-08-03 22:41:06
不得不先汗颜下-。-、、、百度各种大牛在写教程连在哪个平台输入的也不说,小弟我看着都是代码一直打下来,最后才知道原来有的是在LINUX终端下,有的是ARM下。如果哪位习惯发教程的大牛无意看到了,麻烦下次写教程高抬贵手,写明白点,急着学的时间伤不起啊。。。
好了废话不多说,进入主题。
使用平台:RETHAT LINUX5.5
使用源码包:boa-0.94.13.tar.gz(下载地址 )
使用编译工具:arm-linux-gcc 4.3.3
使用开发板:TQ2440
PS:这里使用NFS共享目录,以便后期调试,用TFTP的请做适当调整。
实验步骤:
1、我的NFS默认目录/nfsroot/a,先把源码包拷贝到该目录下,然后使用
#tar xvf boa-0.94.13.tar.gz –C ./ 解压到当前目录。
2、进入/boa-0.94.13/src目录下,使用 #./configure 生成Mikefile文件。然后作如下修改:
把CC=gcc 改为CC=arm-linux-gcc
把CPP=gcc –E 改为 CPP=arm-linux-gcc –E
然后保存。
3、检查 defines.h文件中
#ifndef SERVER_ROOT
#define SERVER_ROOT “XXX”
#endif
上面的XXX为你后期存放boa.conf文件的目录,这里建议使用”/etc/boa”。
4、修改compat.h如下:
把#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
改为#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
5、修改log.c如下:
注释掉如下内容:
/*if (dup2(error_log, STDERR_FILENO) == -1) {
DIE("unable to dup2 the error log");
}*/
6、修改boa.c注释掉以下两部分:
#if 0
if (passwdbuf == NULL) {
DIE("getpwuid");
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1) {
DIE("initgroups");
}
#endif
注意,这里用 #if 0 和 #endif 结合注释,下同。
#if 0
if (setuid(0) != -1) {
DIE("icky Linux kernel bug!");
}
#endif
7、使用 #make 编译,再使用 #arm-linux-strip boa 去掉调试信息,以减小boa的体积。
8、你进一个你想用开发板WEB访问的网页,保留源代码,注意是html后缀的,改名为“index.html”,然后先放到/src这同一目录下吧,等下才容易讲。
9、使用 #cp –f /etc/boa.conf ./ 把boa.conf复制到/src目录下,使用 #cp –f /etc/mime.types ./把mime.types 复制到/src目录下。
修改boa.conf :
User nobody
Group nobody
/*以上两个nobody都改为0*/
ScriptAlias /cgi-bin/ /var/www/cgi-bin/ 地址要和后期网页存放一致。
10、现在开始使用ARM开发板平台了,一般我们都是用串口工具交互的,以下都在窗口工具里输入(一般你系统启动后打回车键就可以输入命令了)。首先,挂载NFS,使用命令 #mount –t nfs –o nolock 192.168.1.100:/nfsroot/n /mnt 挂载到开发板/mnt目录下,具体NFS设置自己去学。
11、进入/mnt/boa-0.94.13/src目录下,使用 # cp boa /bin复制boa到/bin目录下。
12、使用#mkdir /etc/boa在/etc下新建目录boa/ ,然后使用 #cp boa.conf /etc/boa复制boa.conf到boa/目录下。
13、使用#mkdir /var/log/boa新建日志文件目录,在使用#mkdir /var/www新建存放html的目录,使用#cp index.html /var/www 。最后再使用#mkdir /var/www/cgi-bin新建CGI脚本目录。
14、使用 #cp mime.types /etc ,然后进入/bin 目录,使用 # ./boa 运行boa,这是后,你在你的电脑平台或linux平台下浏览器输入你的开发板IP就能进入你之前存放的网页了。