嵌入式web server——Goahead移植要點


前言

在嵌入式設備中,在沒有液晶顯示的情況下,可以使用web來訪問設備,查看設備的運行狀態以及進行參數設置,類似於路由器設置。網上有很多關於各種web server的優劣的評論,在此不討論,只是介紹其中的Goahead在linux下移植的一些要點。

 

移植環境

goahead-3.4.9

arm + linux 2.6,交叉編譯器arm-uclibc-gcc

 

移植要點

1、把src目錄下的certs、utils、goahead-openssl目錄都刪除掉。

2、把osdep里面的osdep.h移到外層src去。

3、把goahead-linux-default-me.h拷到src目錄,改名為me.h。

4、配置me.h,在開頭添加兩行,表示運行的環境。

#define __arm__       1
#define __linux__     1

5、不需要SSL,把me.h中兩個宏都置為0。

#define ME_COM_OPENSSL 0
#define ME_COM_SSL 0

6、需要打印更多運行信息,把me.h中把宏ME_GOAHEAD_LOGFILE由stderr:0改為stderr:2。

#define ME_GOAHEAD_LOGFILE "stderr:0"
#define ME_GOAHEAD_LOGFILE "stderr:2"

7、setLocalHost中調用gethostbyname可能是失敗的,導致運行不起來,直接不調用了。

8、route.txt需要改一下,把route uri=/cgi-bin handler=cgi 改為route uri=/cgi-bin dir=./web handler=cgi,表示cgi-bin目錄在web目錄下。

9、cgiHandler中要注釋掉chdir(dir);,要不找不到cgi-bin下的程序,這樣查找cgi程序時使用相對路徑。

10、編寫makefile,編譯出來可執行文件goahead。

CC=arm-uclibc-gcc

#CC=gcc
 
#-Werror

FLAGS = -Wall -fPIC -g -O2 -s -ldl -lm -o
 
SOURCE_FILE = *.c

goahead: $(SOURCE_FILE)

         $(CC) $(FLAGS)  $@  $(SOURCE_FILE)

clean:

         rm -rf goahead

.PHONY: clean

11、布署,創建目錄/mnt/goahead,把編譯出來的可執行程序goahead放在此目錄下,goahead目錄下再創建web目錄,此目錄存放一些網頁相關的內容(如index.html,css,image等),在web目錄下再創建cgi-bin目錄,用於存放cgi程序。

12、./goahead執行可看到如下信息表示運行成功

goahead: 1: This system does not have IPv6 support

goahead: 2: Configuration for Embedthis GoAhead

goahead: 2: ---------------------------------------------

goahead: 2: Version:            3.4.9

goahead: 2: BuildType:          Debug

goahead: 2: CPU:                arm

goahead: 2: OS:                 linux

goahead: 2: Host:               0.0.0.0

goahead: 2: Directory:          /mnt/goahead

goahead: 2: Documents:          web

goahead: 2: Configure:          me -d -q -platform linux-x86-default -configure . -with openssl -gen make

goahead: 2: ---------------------------------------------

goahead: 2: Started http://*:80

goahead: 2:

^^^^^^^^^^^ web start successful ^^^^^^^^^^^

13、在瀏覽器中輸入ip即可看到,請求goahead的cgitest程序時,可見服務器的打印信息goahead: 2: GET /cgi-bin/cgitest HTTP/1.1,瀏覽器上顯示的頁面如下圖所示。

 

 

附移植到vxworks

由於產品中還有vxworks平台,所以也曾移植到vxworks平台,移植的要點和linux下差不多,把goahead-vxworks-default-me.h復制到src目錄下,改為me.h,並加上幾個關鍵的宏定義即可。

#ifndef VXWORKS
    #define VXWORKS 1
#endif
    
#ifndef OS
    #define OS "VXWORKS"
#endif

#ifndef WEBS
    #define WEBS 1
#endif

#ifndef UEMF
    #define UEMF 1
#endif

#ifndef __mips__
    #define __mips__ 1
#endif

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM