嵌入式Linux Web 编程

    技术2022-05-19  21

    好久没有写文章了,最近比较忙了,论文、实习……一堆事情,废话少说,直奔主题

     

    今天来谈谈最近做的一个东西,在用的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 一些常见的应用程序变成了了,整个框架出来了,什么都变得那么的轻松……


    最新回复(0)