1. 程式人生 > >嵌入式Http伺服器BOA移植經驗總結(…

嵌入式Http伺服器BOA移植經驗總結(…

經過2 天的時間,終於將BOA 伺服器移植到了我的DM365IPCam 上了!現將個人經驗於大家一起分享!

環境:

主機: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

修改CCgccCCarm-softfloat-linux-gnu-gcc

修改CPPgcc -ECCarm-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 並且把boaboa.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