嵌入式Http伺服器BOA移植經驗總結(…
經過2 天的時間,終於將BOA 伺服器移植到了我的DM365 的IPCam 上了!現將個人經驗於大家一起分享!
環境:
主機:ubuntu9.10
交叉編譯工具:arm_v5t_le
目標板:TI 公司的DM365
詳細過程如下:
1. 下載Boa 原始碼
下載地址: http://www.boa.org/
最新發行版本: 0.94.13
下載 boa-0.94.13.tar.gz
2. 修改檔案
(1 )修改 src/compat.h
找到
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
否則會出現錯誤:
util.c:100:1: error: pasting "t" and "->" does not give a valid preprocessing token make: *** [util.o] 錯誤 1
(2 )
註釋掉下面語句:
if (setuid(0)
!= -1) {
DIE(”icky
Linux kernel bug!”);
}
為
#if 0
if
(setuid(0) != -1) {
DIE(”icky
Linux kernel bug!”);
}
#endif
否則會出現問題:boa.c:228 - icky Linux kernel bug!: No such file or directory
3. 生成Makefile
執行:
#cd
boa-0.94.13/src
#./configure
4. 修改Makefile
cd src
vim Makefile
修改CC = gcc 為 CC = arm-softfloat-linux-gnu-gcc
修改CPP = gcc -E 為 CC = arm-softfloat-linux-gnu-gcc -E
5. 編譯
make
ls -l boa
-rwxr-xr-x 1 david david 189223 2009-05-31 13:44 boa
然後為生成的二進位制檔案boa 瘦身
arm-softfloat-linux-gnu-strip
boa
ls -l boa
-rwxr-xr-x 1 david david 61052 2009-05-31 13:51 boa
可以發現boa 的大小前後差距很大這為我們節省了很大的空間
6.Boa 配置
在boa-0.94.13 目錄下已有一個示例boa.conf ,可以在其基礎上進行修改。如下:
#vi boa.conf
(1)Group 的修改
修改 Group nogroup
為 Group root
(2)user 的修改
修改 User nobody
為 User root
(3)ScriptAlias 的修改
修改ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
為 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
(4)AccessLog
建立 /var/log/boa/ 資料夾
否則會出現錯誤提示:“unable to dup2 the error log: Bad file descriptor”
(5) 以下配置和boa.conf 的配置有關,都是在ARM 根檔案系統中建立
以下步驟在開發板上進行:
建立目錄/etc/boa 並且把boa 和 boa.conf 拷貝到這個目錄下
mkdir /etc/boa
建立HTML 文件的主目錄/www
mkdir /www
建立CGI 指令碼所在錄 /www/cgi-bin
mkdir /www/cgi-bin
以下步驟在ubuntu 下進行:
將boa.conf 拷貝到開發板根檔案系統的/etc/boa 下
#cp boa.conf /source/rootfs/etc/boa
將boa 拷貝到開發板根檔案系統的/etc/boa 下
#cp src/boa /source/rootfs/etc/boa
將ubuntu 下/etc/mime.types 拷貝到開發板根檔案系統的/etc 下
#cp /etc/mime.types /source/rootfs/etc
將你的主頁index.html 拷貝到www 目錄下
7 、測試
開啟一個瀏覽器輸入開發板ip 看看效果
192.168.16.44
OK