1. 下载boa源码
进入官网下载http://www.boa.org/news.html,版本为0.94.13
2. 交叉编译boa源码
2.1 解压boa源码压缩包
将下载好的压缩包放入到Ubuntu系统中进行解压
tar -zxvf boa-0.94.13.tar.gz
2.2 生成并配置Makefile文件
(1)将下载好的压缩包放入到Ubuntu系统中进行解压
cd boa-0.94.13/src #进入boa源码路径
./configure #执行配置程序
(2)修改Makefile文件,配置与目标嵌入式平台适配的编译工具链
a.找到CC=gcc,将其改成CC = arm-linux-gnueabihf-gcc,
b.找到CPP = gcc –E,将其改成CPP= arm-linux-gnueabihf-gcc –E, 保存退出。
PS:这里指定的arm-linux-gnueabihf-gcc与系统环境变量的编译器一致
(3)编辑src下的compat.h和boa.c文件
a. compat.h
在compat.h的120行处
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff 改为
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
b.boa.c
在225行处注释掉下面语句:
if(setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}
(4)执行make编译源码
a. 安装依赖:
sudo apt-get install bison
sudo apt-get install flex
b. 执行make
c. 查看是否生成boa可执行文件,若存在则表示成功
d. 压缩boa可执行文件
arm-linux-gnueabihf-strip boa #减小可执行文件的大小
strip boa
3. 修改boa.conf文件
该文件位于boa解压后的第一级文件夹
(1)修改User与Group
User(48行)默认nobody,改为0
Group(49行)默认nogroup,改为0
(2)#ServerName www.your.org.here (90行左右) 去掉#
4. 配置目标嵌入式平台运行BOA所需环境
(1)将编译生成的boa可执行程序(在/src目录下)拷贝到开发板的/bin目录下,并添加可执行权限
(2)在开发板/etc目录下建boa目录,将boa.conf拷贝到板子的/etc/boa目录。并添加读写权限
(3)创建错误记录日志文件所在目录/var/log/boa/error_log,
创建访问记录日志文件所在目录/var/log/boa/access_log,
创建HTML文档的主目录/var/www,
创建CGI脚本所在目录/var/www/cgi-bin/,
在/var/www中放置一个index.html文件。
PS:上述目录若不存在,均需手动创建,这些都是boa运行需要的目录。index.html就是打开网址时的网页。
(4)将虚拟机/etc目录下的mime.types文件到开发板/etc目录。
5. 运行boa
执行./boa运行程序。
./boa
PS:如果中途出现报错,按照以下出现的情况进行解决 。
(1)执行报错1:Could not chdir to “/etc/boa”: aborting
解决:创建/etc/boa目录
可修改boa目标路径,关于该目录的定义在src/defines.h中。执行make clean清理,重新执行make编译boa
(2)执行报错2:Could not open boa.conf for reading.
解决:拷贝boa-0.94.13/boa.conf文件到/etc/boa目录下。
(3)执行报错3:[14/Jan/2021:03:19:55 +0000] log.c:73 - unable to dup2 the error log: Bad file descriptor
解决方案a:在系统中创建log文件夹,文件夹路径和文件参考boa.conf中的设置。
解决方案b:
找到log.c中此处代码位置,将出错代码注释掉。
(4)执行报错4:Cannot open /var/log/boa/access_log for logging: logfile open: No such file or directory
解决:在/var/log/ 下建立boa文件夹,并创建acccess_log文件和error_log文件 或 修改boa.confg中的设置。
最后查看boa进程是否在后台运行
ps -ef |grep boa
6. 网页测试
PC与嵌入式z目标平台同处于一个局域网,在PC浏览器地址栏输入嵌入式平台的IP地址,即可打开网页。