嵌入式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 ...
随机推荐
- zoj 1221 Risk Flory
博客开了快半年了- -学习编程也快1年半了,觉得空空的不太好看,刚好最近开始练习ACM了,就来做一个简单的ACM学习笔记吧,纪念的第一题zol 1221 Risk 风险游戏(个人觉得是这样翻- -翻译 ...
- Write an algorithm such that if an element in an MxN matrix is 0, its entire row and column is set to 0.
1: /// <summary> 2: /// Write an algorithm such that if an element in an MxN matrix is 0, it ...
- maven构建带版本号和日期的war包名
21166312 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !import ...
- [转]在MacOS和iOS系统中使用OpenCV
OpenCV 是一个开源的跨平台计算机视觉库,实现了图像处理和计算机视觉方面的很多通用算法. 最近试着在MacOS和iOS上使用OpenCV,发现网上关于在MacOS和iOS上搭建OpenCV的资料很 ...
- 解决jquery animate({scrollTop$pos},500)与$(window).scroll方法冲突的问题
当点击节点时 先移除$(window).on("scroll")监听事件 在animate动画结束之后再添加上 $('#J_tab li').on('click', functio ...
- 大文件遍历shell脚本
要求说明: 一.普通方法 无读写磁盘优化 有写磁盘优化 有读写磁盘优化 问题:脚本执行越来越慢 top ps aux vmstat 查看系统运行情况正常. 二.AWK 三.perl
- 如何在WIN7中关闭JAVA自动更新
在win7系统上面安装了JAVA JRE或JDK后,就会启动一个jusched,它会定时检查更新,每次开机都会推荐更新或者升级,可能有的朋友在win7下无论如何都关不掉java客户端的自动更新,而又不 ...
- Android开发艺术探索(一)——Activity的生命周期和启动模式
Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被 ...
- 图解三种APP的区别
- [转]flume-ng+Kafka+Storm+HDFS 实时系统搭建
http://blog.csdn.net/weijonathan/article/details/18301321 一直以来都想接触Storm实时计算这块的东西,最近在群里看到上海一哥们罗宝写的Flu ...