嵌入式linux开发板web服务器搭建2——CGIC移植

本文介绍了如何在移植Boa Web服务器后,利用CGIC库和C语言完成嵌入式系统的Web开发。主要内容包括使用交叉编译工具arm-none-linux-gnueabi-gcc编译CGI程序,以及CGIC库的移植和测试过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

移植完Boa后,还需要利用C语言的CGI库“CGIC”,并结合html完成Web开发,实现前端网页和设备的数据交互。

主要步骤

参考https://wenku.baidu.com/view/8d5dd954f01dc281e53af08f.html中的描述,主要步骤如下:

CGI简单测试

  1. 先编写个test.c程序,如下:
#include <stdlib.h>
int main()
 {
    printf("Content-type: text/html\n\n") ;
    printf("\n") ;
    printf("CGI Output\n") ;
    printf("\n") ;
    printf("Hello, world.\n") ;
    printf("\n") ;
    printf("\n") ;
    exit(0) ;
    return 1;
}

利用交叉编译工具,编译上述文件:

arm-none-linux-gnueabi-gcc -o test.cgi test.c

将生成的test.cgi拷贝到移植Boa时在开发板文件系统中建立的/var/www/cgi-bin中,并修改文件权限。

chmod 777 test.cgi
  1. 在/etc/boa/boa.conf中找到ScriptAlias,本来为:
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/

修改为:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

否则将出现错误:404 Not Found,或网页无法打开。
3. 打开网页,http://192.168.0.58/cgi-bin/test.cgi, 即可看到test.c中输出的字符串。即可看到test.c中输出的字符串。
4. 注意:因为test.cgi是在开发板上运行的,所以要用交叉编译工具arm-none-linux-gnueabi-gcc(不知理解的是否对?),我先是用的arm-linux-gcc,出现如下错误:
502 Bad Gateway
The CGI was not CGI/1.1 compliant.
改为arm-none-linux-gnueabi-gcc后不再有问题。

CGIC移植和测试

  1. 从CGIC的主站点
    http://www.boutell.com/cgic/
    下载源码,将其解压并进入源码目录
  # tar -zxvf cgic207.tar.gz
  # cd cgic207
  1. 修改Makefile文件

a. 找到CC=gcc,将其改成

CC=arm-none-linux-gnueabi-gcc

b. 找到AR=ar,将其改成

AR=arm-none-linux-gnueabi-ar

c. 找到RANLIB=ranlib,将其改成

RANLIB=arm-none-linux-gnueabi-ranlib

d. 找到gcc cgictest.o -o cgictest.cgi ${LIBS},将其改成

$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS}

e. 找到gcc capture.o -o capture ${LIBS},将其改成

$(CC) $(CFLAGS) capture.o -o capture ${LIBS}

保存退出。

  1. 然后运行make进行编译,得到的CGIC库libcgic.a,我们通过调试辅助程序capture和测试程序cgictest.cgi,来验证生成CGIC库的正确性。
  2. 将libcgic.a拷贝到开发板的/lib文件夹下,将capture和cgictest.cgi拷贝到开发板的/var/www/cgi-bin目录下,并修改capture和cgictest.cgi的权限
chmod 777 capture cgictest.cgi 
  1. 在Windows的浏览器地址栏输入
    http:// 192.168.0.58/cgi-bin/cgictest.cgi
    ,可以看到页面,CGIC库和测试脚本都移植成功。该页面中含有CGIC的常用控件,通过分析代码可看出怎么使用控件。
  2. https://wenku.baidu.com/view/8d5dd954f01dc281e53af08f.html中的编译工具为arm-linux,这里用的交叉编译工具,即第2步。不然报错:
    502 Bad Gateway502 Bad Gateway
    The CGI was not CGI/1.1 compliant.
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值