GoAhead是一款强大的嵌入式的web服务器,广泛应用在各种潜入式的系统中。支持各种多种操作系统。可以使用静态html,cgi或ASP以及嵌入式的JavaScript。而现在android又在嵌入式系统中应用越来越广泛,以下为在android上移植goahead的详细步骤,其他嵌入式linux与此相同:
1.下载goahead的源码
https://github.com/embedthis/goahead/downloads
2.下载和解压arm-linux-gcc
比如解压到/usr/local/arm-gcc目录
3.修改goahead的mkfile文件
打开goahead/LINUX/Makefile文件,修改gcc和ar变量,如下两行:
CC=/usr/local/arm-gcc/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-gcc
AR=/usr/local/arm-gcc/opt/FriendlyARM/toolschain/4.4.3/bin/arm-none-linux-gnueabi-ar
为了省去链接的麻烦,修改CFLAGS变量,添加static参数,直接修改为静态链接(否则在
执行编译后的目标码时一直报webs not found错误):
CFLAGS =
-static -DWEBS -DOS="LINUX" - DLINUX $(UMSW) $(DASW) $(SSLSW) $(IFMODSW)
4.将goahead/LINUX/main.c的initWebs函数中的如下代码注释:
if (gethostname(host, sizeof(host)) < 0) {
error(E_L, E_LOG, T("Can't get hostname"));
return -1;
}
if ((hp = gethostbyname(host)) == NULL) {
error(E_L, E_LOG, T("Can't get host address"));
return -1;
}
memcpy((char *) &intaddr, (char *) hp->h_addr_list[0],
(size_t) hp->h_length);
修改端口号为8080:
static int port = 8080;
5.修改web服务器的根路径,在goahead/LINUX/initWebs函数中修改
修改如下两行:
static char_t *rootWeb = T(/data/local/webroot);
/* Root web directory */
static char_t *demoWeb = T(/data/local/webrootdemo);
/* Root web directory */
修改如下代码:
sprintf(webdir, %s/%s, dir, demoWeb);为:
sprintf(webdir, %s, demoWeb);
修改如下代码:
sprintf(webdir, %s/%s, dir, demoWeb);为:
sprintf(webdir, %s, rootWeb);
6.添加监听端口的提示:
在在goahead/webs.c的websOpenListen函数的倒数第二行增加如下代码:
fprintf(stderr,"goahead has started!\nlistener port:%d\n",port);
使goahead运行起来我们可以看到它的监听端口。
7.编译:
在goahead/LINUX下执行make命令进行编译,在此目录下生产webs可执行文件
8.创建相关目录
创建/data/local目录;
然后在此目录下创建webroot文件夹和webrootdemo文件夹;
在webroot目录下创建cgi-bin目录
在cgi-bin目录下创建tmp目录
8.运行
拷贝webs到android的/data/local目录下,并且修改为可执行权限,然
后在/data/local目录下,执行如下命令./webs &
9.测试
在/data/local/webroot文件夹下放入测试的静态网页hello.html
在android的浏览器上输入
http://ip:8080/hello.html
就可以看到hello.html网页的内容了;
在/data/local/webroot放入goahead/wwwdemo/asptest.asp
然后在android的浏览器上输入
http://ip:8080/asptest.asp,就可以看到asptest.asp的执行结果了。
在/data/local/webroot/cgi-bin目录下放入
goahead/wwwdemo/cgi- bin/cgitest
然后在android的浏览器上输入
http://ip:8080/cgi-bin/cgitest,就可以看到cgi的执行结果了。
也可以使用pc测试(前提是pc的ip应该和运行goahead程序的android或linux在同
一网段),结果一样。
分享到:
相关推荐
深度实践嵌入式Linux系统移植深度实践嵌入式Linux系统移植深度实践嵌入式Linux系统移植深度实践嵌入式Linux系统移植深度实践嵌入式Linux系统移植
嵌入式Linux系统移植.pdf
嵌入式Linux系统的移植研究.pdf
GoAhead 嵌入式Web服务器 移植到ARM, goAhead Web服务器,小巧、精致,提供了值得称道的性能,特别适合于嵌入式系统,因此,在很多嵌入式产品如路由器中都用到了goAhead作为嵌入式web服务器
第2篇介绍嵌入式Linux C语言开发中的重要技术,包括常用数据类型与修饰符、预处理器与重要函数、常用数据结构及嵌入汇编语言与移植性问题等应用性内容,结合项目实例展开讨论。第3篇则分别给出在嵌入式GUI应用开发、...
全书共25章,从嵌入式处理器ARM开始,讲解了ARM处理器的资源、ARM的指令集、ADS开发工具、嵌入式系统硬件环境的构建、Bootloader、Linux内核移植、嵌入式文件系统、嵌入式Linux多任务程序开发、嵌入式Linux设备驱动...
《嵌入式Linux应用开发完全手册》以S3C2410、S3C2440开发板为例,从分析硬件上电执行的第一条指令开始,到构造出一个类似PDA、基于Linux的桌面GUI系统,带领读者学习、掌握从最底层到最高层的软件编写方法。《嵌入式...
如何将lvgl移植到嵌入式linux
》全书共25章,从嵌入式处理器arm开始,讲解了arm处理器的资源、arm的指令集、ads开发工具、嵌入式系统硬件环境的构建、bootloader、linux内核移植、嵌入式文件系统、嵌入式linux多任务程序开发、嵌入式linux设备...
这篇论文详细介绍了ARM9上的嵌入式Linux系统移植,很有参考价值。
深度实践嵌入式Linux系统移植
嵌入式linux系统移植试题有答案
嵌入式Linux系统移植研究与实现.pdf
Yocto是什么?...使嵌入式Linux系统移植告别了以前通过源码一步步移植的刀耕火种年代。Yocto解决了嵌入式Linux行业内各自为政的乱象,它为芯片厂家,操作系统,和设备厂商之间的协作提供广泛一致的行业支持。
范展源出版的深度实践嵌入式linux系统移植一书中涉及到的所有资源文件。
本书系统论述了在Linux 环境下开发嵌入式系统的设计思想、设计方法及开发流程,通过实例与设计项目,帮助读者尽快掌握嵌入式系统的基本概念,提高嵌入式设计技能。本书共12 章,内容包括嵌入式基础知识、Linux 概述...
Linux下支持netfilter机制的配置工具就是iptables,它也就相当与一个 应用程序,可以对netfilter进行配置(包过滤规则,NAT等等)。所以要实现netfilter(iptables...本文教大家如何把Iptables移植到嵌入式Linux系统。
全书共25章,从嵌入式处理器ARM开始,讲解了ARM处理器的资源、ARM的指令集、ADS开发工具、嵌入式系统硬件环境的构建、Bootloader、Linux内核移植、嵌入式文件系统、嵌入式Linux多任务程序开发、嵌入式Linux设备驱动...
S3C2440的嵌入式Linux系统移植。最好的学习嵌入式的资料!哈哈哈哈哈!
基于AT91RM9200的嵌入式Linux系统的移植与实现.pdf