Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1264345
  • 博文数量: 404
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 5382
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-03 16:29
文章存档

2010年(40)

2009年(140)

2008年(224)

我的朋友

分类: LINUX

2008-10-29 13:46:03

移植步骤网上到处都有,但这位仁兄解决了编译器版本问题
           使用2.95.3编译器不会出现问题,但使用3.3.2等出现问题
 

是一套小型的網頁伺服器,很適合應用在 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”);
}*/
重新編譯

阅读(1390) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~