嵌入式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 ...
随机推荐
- HDOJ/HDU 1113 Word Amalgamation(字典顺序~Map)
Problem Description In millions of newspapers across the United States there is a word game called J ...
- GRUB损坏后,如何修复windows启动mbr
今天使用Ghost装系统遇到windows7不能启动的问题,采用下面帖子中的部分命令搞定之. 我自己是直接使用: 插入windows7安装光盘,从光盘启动,在光盘启动完成后,按下shift+f10键, ...
- javascript中String 对象slice 和substring 区别
1.slice(start,stop)和substring(start,stop) 方法都是用于提取字符串中从start开始到stop-1间的字符(因为字符串索引是从0开始).其中 start必 ...
- Anniversary Party
Time limit: 0.5 second Memory limit: 8 MB Background The president of the Ural State University is g ...
- Hibernate学习之get和load区别
结论: insert():插入记录并将同步更新到session缓存. update():更新记录并同步更新到session缓存. delete():删除记录并同步更新session缓存. get(): ...
- Android面向HTTP协议发送post请求
/** * 採用post请求的方式 * * @param username * @param password * @return null表示求得的路径有问题,text返回请求得到的数据 */ pu ...
- python如何使用 os.path.exists()--Learning from stackoverflow 分类: python 2015-04-23 20:48 139人阅读 评论(0) 收藏
Q&A参考连接 Problem:IOError: [Errno 2] No such file or directory. os.path.exists() 如果目录不存在,会返回一个0值. ...
- PHP发送邮件类库PHPMailer的简单使用
最近需要用到发送邮件的功能,原本是用PHP自带的mail()函数发送的.php mail()这个方法非常简单.方便.易用,但是除了网易邮箱.QQ邮箱.GMAIL邮箱等常用的邮箱可以收到之外,经测试HO ...
- careercup-数组和字符串1.8
1.8 假定有一个方法isSubstring,可检查一个单词是否为其他字符串的子串.给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次isSubstring.旋转字符串: ...
- careercup-数组和字符串1.4
1.4 编写一个方法,将字符串中的空格全部替换为“%20“.假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的”真实“长度. C++实现代码: #include<iostream> ...