硬件平台:GEC2440
编译器:arm-linux-gcc-4.1.2
boa版本:boa-0.94.13
1:装好交叉编译器,过程省略,装了几百遍了,熟!
2:加压软件包。加压参数-jxvf,bz2压缩
3:进入boa-0.9**/src目录
4:利用configure 工具配置生成Makefile文件
./configure
5:修改生成的Makefile文件(设置为交叉编译器)
将CC= gcc和CPP= gcc –E
修改为:
CC=arm-linux-gcc
CPP=arm-linux-gcc –E
6:修改defines.h文件
将#defineSERVER_ROOT “/etc/boa”修改为#define SERVER_ROOT “/home/jianwang”
该处定义的是WEB服务器的文件根目录,跟boa.conf文件中的DocumentRoot一致即可。
7:修改compat.h文件
将#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
防止在make时出现如下错误提示:
util.c:100:1: pasting "t" and "->" does not givea valid preprocessing token
8:修改boa.c文件
8.1注释掉下面两句话:
#if 0
if (passwdbuf == NULL) {
DIE(”getpwuid”);
}
if (initgroups(passwdbuf->pw_name, passwdbuf->pw_gid)== -1) {
DIE(”initgroups”);
}
#endif
否则会出现错误: getpwuid: No such file or directory
80.2注释掉下面语句:
#if 0
if (setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
#endif
否则会出现错误: - ickyLinux kernel bug!: No such file or directory
9:编译boa
Make
至此,在src目录中将得到交叉编译后的boa程序,可以使用以下方法缩小程序的体积
arm-linux-strip boa //去掉相关调试信息,对交叉编译生成的boa程序瘦身
10:修改用户与用户组信息
1)、User 的修改:
将User nobody 修改为User 0
2)、Group的修改:
将Group nogroup修改为Group 0
在根文件系统中的/etc/passwd文件中没有nobody 用户,所以设成0。
在根文件系统中的/etc/group文件中没有nogroup组,所以设成0。
PS:在板子移植的文件系统没有创建用户管理和组管理这两个文件,所以这里必须改为0
11:相关日志文件存放位置项,保留将保存日志文件,根据需要可以选择是否注释掉
#ErrorLog /var/log/boa/error_log
#AccessLog /var/log/boa/access_lo
12: 打开ServerName的设置:
将#ServerName www.your.org.here前面的#号去掉,该项默认为未打开,执行Boa会异常退出,提示“gethostbyname::No such file or d
retory”,所以必须打开。
将DirectoryMaker /usr/lib/boa/boa_indexer注释掉。
13:将MimeTypes /etc/mime.types修改为:MimeTypes /home/jianwang/mime.types
14:将DefaultType text/plain修改为:DefaultType text/html。
15:将Alias /doc /usr/doc注释掉。
16:SccriptAlias的设置:
将ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/修改为:
ScriptAlias /cgi-bin/ /home/jianwang/cgi-bin/
是直接在板子上改了配置文件,如此也能修正错误,由此可见,板子上的系统是和PC 上的系统一样可以直接操作系统配置的