linux如何移植goaheadweb服务器,goahead(嵌入式Web服务器)之交叉编译、移植篇

GoAhead是一个开源、轻量级的嵌入式Web服务器,适用于多种平台。它具有小内存占用、支持认证、SSL通信、动态页面、CGI等功能。在移植到ARM平台时,需要通过交叉编译并配置IP和端口。在遇到端口占用或无法初始化服务器等问题时,可以调整源码解决。此外,GoAhead支持ASP、GoForm、文件下载和CGI等高级应用。
摘要由CSDN通过智能技术生成

GoAhead简介:

GoAhead是一个开源(商业许可)、简单、轻巧、功能强大、可以在多个平台运行的嵌入式Web Server。

GoAhead主要特性:

1 很小的内存消耗

2 支持认证功能Digest Access Authentication (DAA)

3 支持安全的通信,例如SSL(安全的套接字层)

4 支持动态Web页面,如ASP页面

5 可以使用传统的C语言编程定制Web页面里的HTML标签

6 支持CGI(公共网关编程接口)

7 嵌入式的Javascript脚本翻译器

8 独特的URL分析器

9 它基本上属于一个HTTP1.0标准的WEB服务器,对一些HTTP1.1的特性如(持久连接)也提供了支持。每秒65次connections

10 可执行文件大小、内存使用情况:内存需求60K,它的WIN CE版本编译后的大小还不到60k。

goahead源码(百度云盘)

链接:https://pan.baidu.com/s/1ux_9k3ixycMFjLsmHRirBQ

提取码:0gmd

goahead版本:5.1.1

交叉编译:

进入goahead-5.1.1目录,进行编译

make CC=工具链(如arm-himix200-linux-gcc) ARCH=arm //编译

make CC=工具链(如arm-himix200-linux-gcc) ARCH=arm clean //清除

编译后,会在build目录里生成linux-arm-default文件,里面有目标文件以及对于的依赖文件。

注:实际是在编译projects目录下的Makefile文件:goahead-linux-default.mk,编译可以不用传参的形式,直接在goahead-linux-default.mk里修改CC工具链等参数。

移植:

1、将build的linux-arm-default文件的bin目录里的目标文件goahead,依赖的动态库libgo,安全证书self.crt、self.key、auth.txt、route.txt拷贝到开发部的同一个目录下

2、运行goahead 如./goahead

移植可能遇到的问题以及解决方法:

问题1:

goahead: 0: Cannot get host address for host (none): errno 2

goahead: 0: Cannot initialize server. Exiting.

原因分析:

没有设置好IP,需要goahead设置IP

解决措施:

在http.c的setLocalHost函数里,将这块代码

struct hostent *hp;

if ((hp = gethostbyname(host)) == NULL) {

error("Cannot get host address for host %s: errno %d", host, errno);

return -1;

}

memcpy((char*) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length);

ipaddr = inet_ntoa(intaddr);

屏蔽掉,并添加 ipaddr=“0.0.0.0”;

即如:

/*struct hostent *hp;

if ((hp = gethostbyname(host)) == NULL) {

error("Cannot get host address for host %s: errno %d", host, errno);

return -1;

}

memcpy((char*) &intaddr, (char *) hp->h_addr_list[0], (size_t) hp->h_length);

ipaddr = inet_ntoa(intaddr);*/

ipaddr="0.0.0.0";

**注:**0.0.0.0 代表本机的所有ip地址

问题二:

goahead: 0: Cannot bind to address *:80, errno 98

goahead: 0: Unable to open socket on port 80.

原因分析:

其他的应用程序在占用80端口,例如web程序等

解决措施:

kill占用80端口的进程即可

测试例子:

在浏览器上输入设备ip即可显示首页网站

(1)建立网页文件

网页文件index.html,其内容:

index.html

Link to reload this page

Link to log out

Link to test.html

(2)设置goaeah网页html文件的查找路径

在projects目录的goahead-linux-default-me.h文件里修改ME_GOAHEAD_DOCUMENTS为

#define ME_GOAHEAD_DOCUMENTS "./"

改为当前路径。

(3)将index.html文件放在与目标文件goahead相同的目录即可

(4)在网页上输入IP运行即可先index.html内容

总结:每次修改源码内容时,都需要把libgo.so库更新才有效,因为goahead把其他依赖的文件做成了动态库。

下一章节会讲asp与goform、文件下载、cgi的应用

来源:oschina

链接:https://my.oschina.net/u/4348352/blog/4478267

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值