1. 程式人生 > >物聯網倉儲系統(四)—環境搭建—BOA 伺服器和 SQLite3 移植

物聯網倉儲系統(四)—環境搭建—BOA 伺服器和 SQLite3 移植

一、專案環境介紹:1、Ubuntu 12.04 發行版2、GCC 交叉編譯工具鏈(版本 4.5.1)3、U-boot-2010.034、FS4412 開發板(ARM Cortex-A9 核心)5、FS_11C14 開發板(ARM Cortex-M0 核心)二、本節目的:1、瞭解嵌入式 Web 伺服器 BOA2、瞭解 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 和 flexsudo apt-get install bison flex2、將原始碼 boa-0.94.13.tar 複製到相應目錄並解壓
本專案檔案均在: ~/Documents/WarehouseSystem3、配置 BOA執行 configure 命令生成 Makefile./configureMakefile 修改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/logmkdir /source/rootfs/var/log/boatouch /source/rootfs/var/log/boa/error_logtouch /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.c2、編寫 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.ccp hello.cgi /source/rootfs/www/cgi-bin4、開啟開發板並執行 ./boa5、進入主機在輸入如下命令出現如下介面則測試成功firefox 192.168.1.5/cgi-bin/hello.cgi七、SQLite3 移植:1、將原始碼 sqlite-amalgamation-3.7.3.tar.gz 複製到相應目錄並解壓本專案檔案均在: ~/Documents/WarehouseSystem2、建立存放編譯生成檔案的目錄mkdir ~/Documents/WarehouseSystem/sqlite3_arm3、配置交叉編譯和安裝引數cd sqlite-3.7.3./configure --host=arm-none-linux-gnueabi --prefix=/home/wf/Documents/WarehouseSystem/sqlite3_arm4、修改 Makefile5、交叉編譯和安裝make clean; make; make install6、將 sqlite3 拷貝到開發板根檔案系統cp ./sqlite3_arm/bin/sqlite3 /source/rootfs/usr/bin7、將庫檔案拷貝到開發板根檔案系統並建立軟連結mkdir /source/rootfs/usr/libcp ./sqlite3_arm/lib/libsqlite3.so.0.8.6 source/rootfs/usr/libln -s libsqlite3.so.0.8.6 libsqlite3.so.08、測試 sqlite3開啟開發板並執行如下命令sqlite3 test.dbcreate table stu(id, name);insert into stu values(11, 'wenfei6316');select * from stu;.q結果如下圖所示,則 SQLite3 移植完成