物联网仓储系统(四)—环境搭建—BOA 服务器和 SQLite3 移植

一、项目环境介绍:
1、Ubuntu 12.04 发行版
2、GCC 交叉编译工具链(版本 4.5.1)
3、U-boot-2010.03
4、FS4412 开发板(ARM Cortex-A9 内核)
5、FS_11C14 开发板(ARM Cortex-M0 内核)
二、本节目的:
1、了解嵌入式 Web 服务器 BOA
2、了解 CGI 脚本
3、掌握 BOA 交叉编译和移植
4、掌握 SQLite3 的移植
5、源文件下载地址:
三、BOA 介绍(参见 Linux 系统移植):
BOA 是一款单任务的 HTTP 服务器
通过建立 HTTP 请求列表来处理多路 HTTP 连接请求
只为 CGI 程序创建新的进程,最大程度上节省了系统资源
具有自动生成目录、自动解压文件等功能
结合源代码了解更多功能
四、BOA 工作流程(参见 Linux 系统移植):
修正 BOA服务器的根目录
读配置文件(boa.conf)
写日志文件
初始化 Web 服务器
当有客户端连接请求到达时,Web 服务器负责接收客户端请求,并保存相关请求信息
接收客户端请求后,Web 服务器分析客户端请求并做出相应的处理
处理完客户请求后,向客户端发送响应信息,最后关闭与客户端的 TCP 连接
五、BOA 移植:
1、安装词法和语法分析模块 bison 和 flex
sudo apt-get install bison flex
2、将源码 boa-0.94.13.tar 复制到相应目录并解压
本项目文件均在: ~/Documents/WarehouseSystem
3、配置 BOA
执行 configure 命令生成 Makefile
./configure
Makefile 修改
compat.h 修改
boa.c 注释掉下面两段




make 编译源文件
make
修改配置文件 boa.conf
创建 boa 目录
mkdir /source/rootfs/etc/boa
拷贝 boa 和 boa.conf 到 boa 目录
cp ./boa ../boa.config /source/rootfs/etc/boa
在 rootfs 下创建 HTML 文档的主目录
mkdir /source/rootfs/www
拷贝 HTML 里内容 到 www 目录用于测试
cp -r images pice *.html /source/rootfs/www
创建日志文件
mkdir /source/rootfs/var/log
mkdir /source/rootfs/var/log/boa
touch /source/rootfs/var/log/boa/error_log
touch /source/rootfs/var/log/boa/access_log
创建 CGI 脚本目录
mkdir /source/rootfs/www/cgi-bin
拷贝 mime.types 到 rootfs/etc 下
sudo cp /etc/mime.types /source/rootfs/etc/
4、终端测试 BOA 服务器
启动开发板进入 /etc/boa 目录执行 boa 程序
./boa
查看进程
ps | grep './boa'
查看错误日志内容如下则启动正常
cat /var/log/boa/error_log
进入主机在输入如下命令出现如下界面则 BOA 移植成功
firefox 192.168.1.5


六、CGI 脚本测试:
1、新建 CGI 测试 C 文件
vim hello.c
2、编写 CGI 测试代码
#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char *argv[])
{
	printf("Content-type: text/html\n\n");
	printf("<html>\n");
	printf("<head><title>CGI Output</title></head>\n");
	printf("<body>\n");
	printf("<h1>Hello, world.</h1>\n");
	printf("<body>\n");
	printf("</html>\n");
	return 0;
}
3、编译生成 CGI 测试程序并拷贝到开发板根文件系统
arm-none-linux-gcc -o hello.cgi hello.c
cp hello.cgi /source/rootfs/www/cgi-bin
4、打开开发板并运行 ./boa
5、进入主机在输入如下命令出现如下界面则测试成功
firefox 192.168.1.5/cgi-bin/hello.cgi

七、SQLite3 移植:
1、将源码 sqlite-amalgamation-3.7.3.tar.gz 复制到相应目录并解压
本项目文件均在: ~/Documents/WarehouseSystem
2、创建存放编译生成文件的目录
mkdir ~/Documents/WarehouseSystem/sqlite3_arm
3、配置交叉编译和安装参数
cd sqlite-3.7.3
./configure --host=arm-none-linux-gnueabi --prefix=/home/wf/Documents/WarehouseSystem/sqlite3_arm

4、修改 Makefile
5、交叉编译和安装
make clean; make; make install
6、将 sqlite3 拷贝到开发板根文件系统
cp ./sqlite3_arm/bin/sqlite3 /source/rootfs/usr/bin
7、将库文件拷贝到开发板根文件系统并创建软链接
mkdir /source/rootfs/usr/lib
cp ./sqlite3_arm/lib/libsqlite3.so.0.8.6 source/rootfs/usr/lib
ln -s libsqlite3.so.0.8.6 libsqlite3.so.0
8、测试 sqlite3
打开开发板并执行如下命令
sqlite3 test.db
create table stu(id, name);
insert into stu values(11, 'wenfei6316');
select * from stu;
.q
结果如下图所示,则 SQLite3 移植完成

猜你喜欢

转载自blog.csdn.net/wenfei11471/article/details/80782257
今日推荐