porting mini_httpd for arm

ARM 103浏览


随着物联网技术的发展,在一些嵌入式设备管理的与交互中需要通过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=gb2312nn");

       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

 可以看到下面的界面:

 clip_image002

再输入:

192.168.0.126/test.cgi

clip_image004

到此mini_httpd的移植工作就完成了