嵌入式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
嵌入式web server——Goahead移植要点的更多相关文章
- 嵌入式web server——Goahead启用SSL
前言 之前已经介绍过如何把goahead移植到linux平台,现在再介绍goahead应用SSL的一些关键要点.因为此博文是继承于上一篇关于移植的博文,有不明白的请先回看.移植篇点这里. 移植环境 g ...
- 嵌入式 Web Server 温度检测系统
1. Web Server 服务器后台表单处理程序:使用 CGI 程序接口编写后台程序的 Web 服务器. 2. Boa 服务器
- 三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记
一:移植Boa(web服务器)到嵌入式Linux系统 一.Boa程序的移植 1.下载Boa源码 下载地址: http://www.boa.org/ 目前最新发行版本: 0.94.13 ...
- GoAhead 嵌入式web
https://embedthis.com/goahead/ 入手了一个360 4g wifi :使用jquery .goahead Goahead webserver编辑 GoAhead We ...
- 嵌入式web服务器BOA的移植及应用
嵌入式web服务器子系统 一.嵌入式web服务器的控制流程 如下图所示,嵌入式web服务器可实现通过网络远程控制嵌入式开发板,便捷实用. 控制流程:浏览器 --->>>嵌入式开发板 ...
- 嵌入式开发之web服务器---boa移植
近段时间在做ti8148的编解码器又涉及到boa web服务器的移植.在移植到ARM开发板的过程中,遇到很多的问题.原先的自带thttpd 由于功能没有boa完善,比如在ubuntu下面的utf-8编 ...
- Jexus web server V5.1 安装配置要点
一.Jexus简介:Jexus web server for linux 是一款基于.NET兼容环境,运行于Linux/unix操作系统之上,以支持ASP.NET为核心功能的高性能WEB服务器.Jex ...
- 嵌入式web服务
:boa.thttpd.mini_httpd.shttpd.lighttpd.goaheand.appweb和apache等. Boa 1.介绍 Boa诞生于1991年,作者Paul Philips. ...
- Boa Web Server 缺陷报告及其修正方法
综述 Boa 作为一种轻巧实用的 WEB 服务器广泛应用于嵌入式设备上, 但 Boa 对实现动态网页的 CGI 的支持上仍存在一些缺陷, 本文描述了 Boa 对 CGI 的 Status/Locat ...
随机推荐
- ganglia 无数据问题解决
用ambari安装了HDP版本的hadoop,dashboard中ganglia的CPU.内存.网络等监控没有数据,找了很多原因,最后发现是因为rrdcache的时间问题导致的. gmetad的deb ...
- AIX topas命令详解
本文转载于:AIX topas命令详解 topas命令默认2秒更新一次 一.topas命令以区域形式表现系统各项指标性能,如下图: 1. CPU:反应CPU性能区域,如果有多个 CPU,按 c 键两次 ...
- OGG问题 ORA-01403的处理办法
认识logdump分析工具及常用命令:http://book.51cto.com/art/201202/319253.htm http://www.killdb.com/2012/09/01/gold ...
- Android中shape属性详解
一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标签怎么用. 1.新建shape文件 首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.x ...
- Linux中的文件压缩,打包和备份命令
压缩解压命令 gzip 文件 -c : 将压缩数据输出到屏幕,可用来重定向 -v 显示压缩比等信息 -d 解压参数 -t 用来检验一个压缩文件的一致性看看档案有没错 -数字 : 压 ...
- 用CS-Script把Notepad++变身支持智能提示和运行代码的C#集成开发环境
博客搬到了fresky.github.io - Dawei XU,请各位看官挪步.最新的一篇是:用CS-Script把Notepad++变身支持智能提示和运行代码的C#集成开发环境.
- iOS开发 Xcode中的Info.plist字段含义
Info.plist用于向iOS提供关于app,bundle或者framework的一些重要信息.它指定了比如一个应用应该怎样启动,它如何被本地化,应用的名称,要显示的图标,还有更多.Info.pli ...
- Quartz定时任务学习(二)web应用
web中使用Quartz 1.首先在web.xml文件中加入 如下内容(根据自己情况设定) 在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用 ...
- 开源的连接池技术DBCP和C3P0
概述: Sun公司约定: 如果是连接池技术,需要实现一个接口! javax.sql.DataSource; 相关jar包和资料下载 1.1 DBCP连接池: l DBCP 是 Apache 软 ...
- (转)在javascript中关于submit和button提交表单区别
原文来自:http://www.jb51.net/article/42236.htm submit是button的一个特例,也是button的一种,它把提交这个动作自动集成了,submit和b ...