zoukankan      html  css  js  c++  java
  • 嵌入式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
    

      

  • 相关阅读:
    Nginx从安装到配置文件详解
    python流程控制语句
    python数据类型以及方法
    python介绍以及基础基础语法
    new 操作符
    js 模拟substr
    js 对于链式加载的思考
    js 实现哈夫曼树
    js实现深度优先
    js 广度优先遍历
  • 原文地址:https://www.cnblogs.com/qinwanlin/p/5081951.html
Copyright © 2011-2022 走看看