123
分类: LINUX
2012-12-26 09:24:37
是一套小型的網頁伺服器,很適合應用在 Embedded System 上,並且內建就可以直接支援以 C 寫的 CGI 網頁,這篇是移植 Boa 到 ARM9 S3C2410 平台的過程,Linux 版本為 2.6.17.4,使用 arm-linux toolchain 3.4.1 編譯。
1.
產生
Makefile
下載
Source
code 並解壓縮進到
src
目錄。
#
./configure –host=arm-linux
2.
修改
Makefile
使用跨平台編譯
CC
= arm-linux-gcc
CPP
= arm-linux-gcc
-E
# make (如果編譯或執行時有錯誤請看Q&A)
#
arm-linux-strip boa
3.
配置
Boa
可以在源碼目錄找到這個設定檔,放到
/etc/boa
裡面,有修改的部份如下:
User
0
Group 0
#DirectoryMaker /usr/lib/boa/boa_indexer
CGIPath
/bin:/usr/bin:/var/www/cgi-bin
ScriptAlias /cgi-bin/
/var/www/cgi-bin/
然後需要放一個 mime.types 檔案在 /etc,我是直接複製 ubuntu 裡的檔案。
4.
加入
boa
執行檔
將編譯好的
boa
執行檔加入檔案系統
/bin,要啟動
server
只要輸入
boa
即可,可到
/var/log/boa
查看
log。
問題
Q&A:
Q:使用
toolchain
3.4.1 編譯出現錯誤
arm-linux-gcc
-g -O2 -pipe -Wall -I. -c -o util.o util.c
util.c:100:1: pasting
“t” and “->” does not give a valid preprocessing
token
make: *** [util.o] Error 1
A:修改
src/compat.h
找到
#define
TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
修改成
#define
TIMEZONE_OFFSET(foo) (foo)->tm_gmtoff
Q:執行
boa
出現
“gethostbyname::No
such file or directory”
A:需將
boa.conf
裡的
ServerName
開頭註解拿掉
Q:無法啟動
Boa,error
log 顯示
“boa.c:266.icky
Linux kernel bug!:No such file”
A:修改
src/boa.c,將底下判斷式註解掉:
/*if
(setuid(0) != -1) {
DIE(”icky Linux kernel bug!”);
}*/
重新編譯
Q:無法啟動
Boa,error
log 顯示
“boa.c:211
- getpwuid….略”
A:修改
src/boa.c,將底下兩個判斷式註解掉:
/*if
(passwdbuf == NULL) {
DIE(”getpwuid”);
}
if
(initgroups(passwdbuf->pw_name, passwdbuf->pw_gid) == -1)
{
DIE(”initgroups”);
}*/
重新編譯