嵌入式Web伺服器移植
文章一
轉載自:http://hi.baidu.com/wdr_cloud/item/129f8417e34838ecddeeca57
僅供個人學習之用,請勿用於他途。
***************S3C2410,linux2.6.22.6的核心,交叉編譯:arm-softfloat-linux-gnu-gcc(4.3.2)
1、下載源碼 http://ww.boa.org (boa-0.94.13.tar.gz)
2、解壓源碼,進入源碼檔案夾;cd boa-0.94.13/src 執行./configure 產生Makefile檔案;
3、修改Makefile檔案
修改 CC = gcc
為 CC = arm-softfloat-linux-gnu-gcc
修改 CPP = gcc - E
為 CPP = arm-softfloat-linux-gnu-gcc -E
4、 編譯 make
util.c:100:1: pasting "t" and "->" does not give a valid preprocessing token
make: *** [util.o] Error 1
解決方案:
修改compat.h中的
#define TIMEZONE_OFFSET(foo) foo##->tm_gmtoff
為:
#define TIMEZONE_OFFSET(foo) foo->tm_gmtoff
修改完之後在make 就ok了
5.arm-softfloat-linux-gnu-strip boa;
Boa的配置
Boa需要在/etc目錄下建立一個boa目錄,裡面放入Boa的主要設定檔boa.conf。在Boa源碼目錄下已有一個樣本boa.conf,可以在其基礎上進行修改。
1. Group nogroup修改成Group 0,由於在/etc/group檔案中沒有nogroup組,所以設成0
另外在/etc/passwd中有nobody使用者,所以User nobody不用修改。
2. ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ 修改成 ScriptAlias /cgi-bin/ /var/www/cgi-bin/
其它預設設定即可。
還需要建立記錄檔所在目錄/var/log/boa,建立HTML文檔的主目錄/var/www,將靜態網頁存入該目錄下(可以將主機/usr/share/doc/HTML/目錄下的index.html檔案和img目錄複寫到/var/www目錄下),建立CGI指令碼所在目錄/var/www/cgi-bin,將cgi的指令碼存放在該目錄下。另外還要將mime.types檔案複製/etc目錄下,通常可以從linux主機的/etc目錄下直接複製即可。
Boa的執行
實際運行時,可以將index.html檔案、img目錄和mime.types檔案放到CF卡目錄下,建立目錄後,拷貝至相應目錄。
在開發板上運行 boa 檢查連接埠是否被開啟,要不瀏覽器無法訪問到板子。
直接在瀏覽器中輸入192.168.10.12/index.html 靜態HTML調試成功。
CGI指令碼測試
編寫helloworld.c 程式
#include <stdio.h>
int main(void)
{
printf("Content-type:text/html\n\n");
printf("<html>\n");
printf("<head><title>CGI Qutput</title></head>\n");
printf("<body>\n");
printf("<h1>Hello,world.</h1>\n");
printf("<body>\n");
printf("</html>\n");
exit(0);
}
交叉編譯產生helloworld.cgi
#arm-softfloat-linux-gnu-gcc -o helloworld.cgi helloworld.c
將helloworld.cgi拷貝至/var/www/cgi-bin/下,瀏覽器輸入
http://192.168.10.12/cgi-bin/helloworld.cgi
在頁面上出現
Hello,world.
文章二:
轉載自:http://blog.sina.com.cn/s/blog_7bd0d88201011euz.html
僅供個人學習之用,請勿挪用他途。
《嵌入式Linux系統開發詳解——基於EP93XX系列ARM》一書和boa內建的文檔等對該內容有比較詳細的介紹,但在實驗過程中,仍可能會出現一些問題。下面是我在WNC201系統(AT91RM9200)上的移植過程,歡迎討論!
第一步 Boa程式的移植
1、下載Boa源碼
:
http://www.boa.org/,或者http://sourceforge.net
最新發行版本: 0.94.13
下載boa-0.94.13.tar.gz,注意:從boa上下載的是boa-0.94.13.tar.tar,解壓方式一樣
解壓:# tar xzf boa-0.94.13.tar.gz
2、產生Makefile檔案
直接運行src/configure檔案
3、修改Makefile檔案
a、
修改 CC =gcc 為 CC =/usr/local/arm/2.95.3/bin/arm-linux-gcc |
b、
修改 CPP = gcc - E 為 CPP = /usr/local/arm/2.95.3/bin/arm-linux-gcc-E |
4、編譯
# make
#/usr/local/arm/2.95.3/bin/arm-linux-strip boa
第二步 Boa的配置
Boa需要在/etc目錄下建立一個boa目錄,裡面放入Boa的主要設定檔boa.conf。在Boa源碼目錄下已有一個樣本boa.conf,可以在其基礎上進行修改。
1、Group的修改
修改 Group nogroup 為 Group 0 |
由於在/etc/group檔案中沒有nogroup組,所以設成0。另外在/etc/passwd中有nobody使用者,所以Usernobody不用修改。
2、ScriptAlias的修改
修改 ScriptAlias/cgi-bin/ /usr/lib/cgi-bin/ 為 ScriptAlias/cgi-bin/ /var/www/cgi-bin/ |
3、ServerName的設定
修改 ServerNamewww.your.org.here 為 ServerName www.your.org.here |
注意:該項預設為未開啟,執行Boa會異常退出,提示“gethostbyname::No such file ordirectory”,所以必須開啟。其它預設設定即可。
第三部:Boa的執行
成功配置以後,還需要建立記錄檔所在目錄/var/log/boa,建立HTML文檔的主目錄/var/www,將靜態網頁存入該目錄下(可以將主機/usr/share/doc/HTML/目錄下的index.html檔案和img目錄複寫到/var/www目錄下),建立CGI指令碼所在錄/var/www/cgi-bin,將cgi的指令碼存放在該目錄下。另外還要將mime.types檔案複製/etc目錄下,通常可以從linux主機的/etc目錄下直接複製即可。
實際運行時,可以將index.html檔案、img目錄和mime.types檔案放到CF卡目錄下,建立目錄後,拷貝至相應目錄。
製作run.sh
mkdir/etc/boa cp /cf/boa/boa.conf /etc/boa/ mkdir /var/log mkdir /var/log/boa mkdir /var/www cp /cf/boa/index.html /var/www/ cp -r /cf/boa/img /var/www/ mkdir /var/www/cgi-bin cp /cf/boa/mime.types /etc/ cp /cf/boa/boa /./boa & |
直接在瀏覽器中輸入http://192.168.1.107,出現Red Hat的歡迎網頁。靜態HTML調試成功。
第四步 CGI指令碼測試
1、編寫Helloworld.c程式
| #include<stdio.h> int main(void) { printf("Content-type: text/html\n\n"); printf("<html>\n"); printf("<head><title>CGIOutput</title></head>\n"); printf("<body>\n"); printf("<h1>Hello,world.</h1>\n"); printf("<body>\n"); printf("</html>\n"); exit(0); }
|
交叉編譯產生helloworld.cgi
# /usr/local/arm/2.95.3/bin/arm-linux-gcc -ohelloworld.cgi helloworld.c
2、瀏覽
將helloworld.cgi拷貝至/var/www/cgi-bin/下,瀏覽器輸入:http://192.168.1.107/cgi-bin/helloworld.cgi