好久没有写文章了,最近比较忙了,论文、实习……一堆事情,废话少说,直奔主题
今天来谈谈最近做的一个东西,在用的freescale Imx27中架一个WEB server ,其实就是一个简单的B/S架构了。
首先,既然是一个WEB server ,那么肯定有一个服务器了,在一个嵌入式板子上,不可能架一个像apache这么大的服务器的,即使架在里面,整个板子的性能是可想而知的……
1.一步一步来,首先需要选择什么样的服务器,一些好心的人,已经为我们提供了蛮多的嵌入式server了,只要我们配置一下环境就可以了。有 boa,httpd,yhttpd,easyhtpd,lighttpd 等等了,具体选择哪个,根据你的爱好了……
这里我选择了一个thttpd ,你可以到网上下载一个了,具体怎么找,百度之……google之……
1)这里我下载了一个thttpd-2.25b.tar.gz
2)解压tar xzvf thttpd-2.25b.tar.gz
3)cd thttpd-2.23b
4)修改Makefile文件中的CC ,选择你的交叉编译器了
CC = /opt/freescale/usr/local/gcc-4.1.1-glibc-2.4-nptl-sf-1/arm-926ejs-linux/bin/arm-926ejs-linux-gcc
./configure—host=ann—linux
$vi Makefile
LDFLAGS= -static//指定为静态编译
当然也可以不用静态编译,这样会让thttpd变得很大,去掉之后,用arm-linux-readelf -d thttpd 命令来读取这个包中缺少什么样的包,却什么加什么……
5) 现在就可以交叉编译一下了
简单make 之后用arm-926ejs-linux-strip thttpd 去掉调试信息……
6)修改一下thttpd.conf这个配置文件,具体配置方法:
# This secti
on overrides defaults
#声明CGI程序的目录,是以dir为根目录的路径
dir=/opt/dvsdk/dm365/web
#chroot
#屏蔽chroot是为了运行动态编译的CGI
user=root# default = nobody
logfile=/var/log/thttpd.log
pidfile=/var/run/thttpd.pid
# This section _documents_ defaults in effect
port=81
#port参数用于更改端口号(可不改,若还运行了别的WEB服务器,则需用不同端口)
# nosymlink# default = !chroot
#symlinks
# novhost
cgipat=/cgi-bin/*
# nothrottles
2.第二部是配置CGI的环境,当然就是很简单了,只要修改一下thttpd.conf这个文件里,见上面,上面已经为你配置好了……
这个开发环境已经基本配置好了,现在总结一下我在这个过程中犯过的错误,有些错误纠结了我好久……
回想这个过程,真是……
1)编译好之后得CGI文件,必须用chmod a+x XXX.cgi 给它执行的权限,否则就是乱码,或者就跳出一个下载的页面,这个问题错误至少多花了我2个小时的时间,郁闷死了
2) 第二个是编译CGI文件需要交叉编译环境,但是我不知道脑子怎么短路了,竟然犯如此低级的错误,又至少多话了我一个小时间……
3)打印HTML文件,什么样的形式,出现了各种各样的问题……
4)乱码问题,是Linux支持UTF-8而PC上面一般用的是GD2312格式,导致这个问题,可以转化一下……
5)GET方法和POST方法的选择问题,有一个标准……
6)还有当然就是程序的错误了
7)在使用过程中,要学会使用shell脚本,不然同样的几条步骤,在测试的时候需要反复的输入,耽误时间……
8)当然,Makefile文件编写也是很重要的,不同的目录,不同的文件相互调用,怎么写Makefile文件,让其出来我们需要的binary文件呢?也是需要学习的……
总之,看似简单的东西,做起来什么问题都有了,这就是眼高手低……
当然,在调试的过程中,遇到错误的时候,要善于分析,有时候不知道怎么的,脑子不停使唤,一个劲的转牛角尖,导致白白浪费了大量的时间。
经过艰苦的奋斗,这个礼拜四终于全部搞定了,其他的就是界面的美化,javascript、HTML 和Linux 一些常见的应用程序变成了了,整个框架出来了,什么都变得那么的轻松……