向ARM9移植appWeb

來源:互聯網
上載者:User
前幾天鼓搗了一個統計網路流量的軟體,叫Bandwidthd。用起來之後發現這個軟體很好,介面比較友好。就想把這個東西弄到開發板上玩玩,
如果移植成功的話,那開發板不就變成一個網路流量統計器了麼。不過這個軟體的分析報告是通過Web方式給出的。那麼就必須得在運行Bandwidthd的
機器上開一個Web伺服器,在普通的環境下可以使用httpd,但是在板子上就不好用了,太龐大。於是我就找了一個小型的嵌入式Web
Server,也就是今天這篇文章的主角——appWeb appWeb有兩種許可,一種是GPL,免費的,另外一種是商業許可,有30天的試用期。免費的版本在www.appwebserver.org
 下載,appWeb的商業版本由Mbedthis公司發布和維護,網址是 www.mbedthis.com
  一般情況下使用免費的版本就可以了,appWeb的效能非常的優秀,其特點可以到網站上查閱,這裡不多說。下面切入正題,如何移植appWeb到ARM開發板。 appWeb的源碼包中有個很關鍵的工具,就是configure。如果configure配置好了,那麼無需手動修改Makefile就可以
正確的交叉編譯出ARM格式的可執行檔。在configure之前需要設定幾個關鍵的環境變數,這些環境變數的值將被configure程式讀取然後應
用到編譯裡去,變數如下: CC,AR,LD,RANLIB,STRIP    //此5個須設定成交叉編譯工具的所在位置CC_FOR_BUILD             //這個設定成主機上的gcc 我用的是handhelds.org的toolchain,因此進行如下設定:#export CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc#export AR=/usr/local/arm/3.4.1/bin/arm-linux-ar#export LD=/usr/local/arm/3.4.1/bin/arm-linux-ld#export RANLIB=/usr/local/arm/3.4.1/bin/arm-linux-ranlib#export STRIP=/usr/local/arm/3.4.1/bin/arm-linux-strip#export CC_FOR_BUILD=gcc 設定好後進行configure。configure提供了很多的參數,具體的可以參考appWeb網站上的安裝說明,地址是 http://www.appwebserver.org/products/appWeb/doc/product/index.html
  下面給出我的configure參數:#./configure --host=arm-s3c2410-linux --build=i686-pc-linux /--disable-shared --disable-shared-libc --enable-static /--port=80 --disable-multi-thread --type=RELEASE /--prefix=/usr/appWeb --webDir=/var/web /--disable-test --disable-samples 這裡的參數在appWeb的網站上都有說明。需要指出的是,--host參數設定目標板的類型,這裡用的是arm-s3c2410-
linux,就是說在ARM平台上的Linux系統。而--build才是說明宿主機的平台,這裡是i686-pc-linux,就是說在一台裝有
Linux的PC上進行交叉編譯。我把appWeb編譯成了一個靜態版本,這樣會省去很多載入動態庫的麻煩。--disable-test
--disable-samples兩個參數是說編譯的時候取消測試和例子,不知為什麼,在我的環境中如果不取消這兩個東西,編譯這兩個東西的時候會產生
錯誤。 然後就make吧#make 成功之後make install#make install 程式會被安裝到3個位置,一個是可執行程式的位置,一個是--prefix指定的程式主目錄,我這裡是/usr/sbin和/usr
/appWeb,還有一個就是放html的WebDir了。在/usr/sbin中的是編譯出的正常版本,appWeb。但是這個不是我需要的全靜態版
本,於是到/appWeb原始碼目錄/bin下找到一個叫做appWebStatic的程式,把它cp出來。 接下來就是建立一個nfs的共用目錄了,就起名叫/share吧。關於NFS的配置和使用不是本文的內容,所以不多說。然後把/usr
/appWeb裡的所有東西都cp到share下,把appWebStatic也cp過來,最後在share中建立一個web目錄,這是appWeb讀取
html的預設位置,在web中隨便寫個test.html做測試用。 測試appWeb。還是老一套,把開發板用網線連上hub,直接連主機也行。接上串口,在Linux下開minicom連開發板,連上之後在開發板的shell下mount主機的nfs目錄。#mount -t nfs 主機IP:/share /tmp/nfs#cd /tmp/nfs#./appWebStatic 如果一切正常的話web server就起來了,然後在主機上用elinks或者別的什麼瀏覽器來瀏覽一下網頁,#elinks 開發板IP/test.html 應該可以看見網頁了,到此所有主要步驟完成。 接下來就是修改cramfs,把appWebStatic加到檔案系統中,然後把cramfs燒到板子上就Ok了。這些步驟也不贅述了。 結語:1)appWeb天生是給嵌入式裝置用的,支援ARM平台,所以移植起來很方便,只要正確的進行configure基本就行了2)appWeb源碼目錄下有兩個檔案,config.h和config.make。這兩個檔案其實就是configure的結果,Makefile就是用他們來編譯器的。如果感覺使用configure不方便,直接手動修改也行,雖然官方不推薦這樣做2)移植appWeb的目的是為了用Bandwidthd,但是Bandwidthd比較難移植,這個目前正在嘗試中。3)開發板上必須要有功能比較完整的Linux系統,這樣方便測試,比如使用隨身碟或者NFS來測試應用程式。

5)還是那句話,嵌入式不是一開始就非做底層不可,做做應用,移植移植程式在板子上跑跑即好玩,還能很好的入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.