porting mini_httpd for arm
2015-06-12 22:17
309 查看
随着物联网技术的发展,在一些嵌入式设备管理的与交互中需要通过web服务来访问和控制一些设备,这就需要我们的嵌入式设备能够支持这个功能(嵌入式web服务),即是在嵌入式的设备中运行一个支持脚本或CGI功能的web服务器。常见的嵌入式web服务器有下面的几个:
minihttpd ,lighttpd , shttpd ,thttpd ,boa ,appweb , goahead 等。
我这里就选择使用了mini_httpd,这个功能相对于其他的来说有弱一点,但是可以满足我的需要了。具体的功程如下:
1下载mini_httpd网站:http://www.acme.com/software/mini_httpd/
# wget
http://www.acme.com/software/mini_httpd/mini_httpd-1.21.tar.gz
2编译
解压:
# tar –zxvf mini_httpd-1.21.tar.gz
修改Makefie,把编译器换成交叉编译器为arm
主要修改了下面的部分:
#BINDIR = /usr/local/sbin
BINDIR = /home/chengfei/develop/atmel/sm/web/sbin/
#MANDIR = /usr/local/man
MANDIR = /home/chengfei/develop/atmel/sm/web/man/
#CC = cc
CC = /usr/local/arm/arm-2007q1/bin/arm-none-linux-gnueabi-gcc
编译:
# make
# make install
经过上面这些操作,最后把mini_httpd文件安装到上面设置的目录sbin下。
把sbin目录下的所有文件拷贝到arm开发板的文件系统下的sbin目录下。
3配置文件
创建一个mini_httpd.conf的文件,并加上下面的这些内容:
nochroot
dir=/mini_httpd/wwwroot
cgipat=**.cgi
user=root
pidfile=/mini_httpd/mini_httpd.pid
logfile=/mini_httpd/mini_httpd.log
charset=UTF-8
上面的目录mini_httpd是在根文件系统中没有的,需要再到文件系统下创建mini_httpd这个目录。不过也可以在***好文件系统后,待arm开发板启动后再创建也是可以的。
现在我就在待***的文件系统中创建了上面所需要的目录。
4测试:
创建test.c文件
内容如下:
#include <stdio.h>
#include <unistd.h>
void main()
{
printf("Content-type: text/html;charset=gb2312\n\n");
printf("\n");
printf("<html><head><title>CGI TEST</title></head>");
printf("<body>");
printf("<h1>CGI TEST</h1>");
printf("<h2>chengfei</h2>");
printf("Hello Web!\n");
printf("</body></html>");
}
编译测试文件:
# arm-none-linux-gnueabi-gcc –o test.cgi test.c
5重新***文件系统
***文件系统
把测试使用的程序加入到文件系统中,并重新***文件系统。也有其他不用重新***文件系统的方法.
烧写文件系统到板子
6测试:
查看mini_httpd的版本
# mini_httpd
-V
启动mini_httpd
# mini_httpd –C /etc/mini_httpd.conf
运行后会出现下面的信息:这个后面再处理!
socket: Address family not supported by protocol
mini_httpd: started as root without requesting chroot(), warning only
7打开浏览器测试一下
192.168.0.126
可以看到下面的界面:
再输入:
192.168.0.126/test.cgi
到此mini_httpd的移植工作就完成了
minihttpd ,lighttpd , shttpd ,thttpd ,boa ,appweb , goahead 等。
我这里就选择使用了mini_httpd,这个功能相对于其他的来说有弱一点,但是可以满足我的需要了。具体的功程如下:
1下载mini_httpd网站:http://www.acme.com/software/mini_httpd/
# wget
http://www.acme.com/software/mini_httpd/mini_httpd-1.21.tar.gz
2编译
解压:
# tar –zxvf mini_httpd-1.21.tar.gz
修改Makefie,把编译器换成交叉编译器为arm
主要修改了下面的部分:
#BINDIR = /usr/local/sbin
BINDIR = /home/chengfei/develop/atmel/sm/web/sbin/
#MANDIR = /usr/local/man
MANDIR = /home/chengfei/develop/atmel/sm/web/man/
#CC = cc
CC = /usr/local/arm/arm-2007q1/bin/arm-none-linux-gnueabi-gcc
编译:
# make
# make install
经过上面这些操作,最后把mini_httpd文件安装到上面设置的目录sbin下。
把sbin目录下的所有文件拷贝到arm开发板的文件系统下的sbin目录下。
3配置文件
创建一个mini_httpd.conf的文件,并加上下面的这些内容:
nochroot
dir=/mini_httpd/wwwroot
cgipat=**.cgi
user=root
pidfile=/mini_httpd/mini_httpd.pid
logfile=/mini_httpd/mini_httpd.log
charset=UTF-8
上面的目录mini_httpd是在根文件系统中没有的,需要再到文件系统下创建mini_httpd这个目录。不过也可以在***好文件系统后,待arm开发板启动后再创建也是可以的。
现在我就在待***的文件系统中创建了上面所需要的目录。
4测试:
创建test.c文件
内容如下:
#include <stdio.h>
#include <unistd.h>
void main()
{
printf("Content-type: text/html;charset=gb2312\n\n");
printf("\n");
printf("<html><head><title>CGI TEST</title></head>");
printf("<body>");
printf("<h1>CGI TEST</h1>");
printf("<h2>chengfei</h2>");
printf("Hello Web!\n");
printf("</body></html>");
}
编译测试文件:
# arm-none-linux-gnueabi-gcc –o test.cgi test.c
5重新***文件系统
***文件系统
把测试使用的程序加入到文件系统中,并重新***文件系统。也有其他不用重新***文件系统的方法.
烧写文件系统到板子
6测试:
查看mini_httpd的版本
# mini_httpd
-V
启动mini_httpd
# mini_httpd –C /etc/mini_httpd.conf
运行后会出现下面的信息:这个后面再处理!
socket: Address family not supported by protocol
mini_httpd: started as root without requesting chroot(), warning only
7打开浏览器测试一下
192.168.0.126
可以看到下面的界面:
再输入:
192.168.0.126/test.cgi
到此mini_httpd的移植工作就完成了
相关文章推荐
- AsyncHttpClient(上传图片到服务器)
- Windows开发功能小集!UDP/TCP开发步骤
- Android利用Fiddler进行网络数据抓包
- 网络工具包
- HTTP的KeepAlive是开启还是关闭?
- 网络请求
- 网络编程学习笔记--1.socket可读可写条件
- 如何实现共享软件网络授权认证,包括注册新用户、登录、修改密码等操作
- 马尔科夫网络
- 贝叶斯网络
- JAVA基础——网络编程
- HTTP协议(1):简介
- 黑马day02 http协议详解
- 黑马程序员——java基础-网络编程
- Jmeter做性能测试——HTTP请求
- 网络数据请求(同步/异步连接下的GET/POST请求)
- Java——(十)网络编程
- http协议包:请求包和应答包
- HTTP请求、响应报文格式
- http协议-响应和请求