安防监控项目---CGI接口的移植和使用

文章目录

  • 前言
  • 一、CGI
  • 二、CGI的具体移植步骤
    • 2.1 cgi源码下载
    • 2.2 搭建交叉编译环境
    • 2.3 注意事项
  • 三、测试结果
  • 总结


前言

书接上期,上期与大家分享的是boa服务器的移植,那么几天要和大家介绍的呢是一款接口,哈哈哈,用起来也是有点难度的,但是,大家要知道,有些东西虽然很高深,但是只要我们会使用能够使用最基本的就可以;这也间接证明了我们嵌入式设计的一个特点,那就是够用就行,但对于学习者来说,肯定是懂得越多越好,那我认为呢,在设计时,当黔驴技穷时,做到够用就行是OK的,但是如果说作为学习者而言,肯定是不够滴!所以学无止境呀,哈哈哈哈~,下面看下CGI!


一、CGI

首先呢CGIC是一个库,也可以称之为一个interface,这里列举一些CGI的基本功能:

	1   分析数据,并自动校正一些有缺陷的浏览器发来的数据;
	2   透明接收用GET或 POST方法发来的Form数据;
	3   能接受上传文件;
	4   能够设置和接收cookies;
	5   用一致的方式处理From元素里的回车;
	6   提供字符串,整数,浮点数,单选或多选功能来接收数据;
	7   提供数字字段的边界检查;
	8   能够将CGI环境变量转化成C中的非空字符串;
	9   提供CGI程序的调试手段,能够回放CGI程序执行时的CGI状态;

总之,CGIC是一个功能比较强大的支持CGI开发的标准C库,并支持Linux, Unix 和Windows等多操作系统。

二、CGI的具体移植步骤

需要强调的是在上期分享中boa服务器是现在Ubuntu环境下进行安装测试(boa的格式为X86格式),那么我们这次移植cgi到A9平台上;

2.1 cgi源码下载

从CGIC的主站点http://www.boutell.com/cgic/下载源码,将其解压并进入源码目录;
本项目使用的是cgi的2.05版本;
下载后拷贝到Ubuntu环境下直接进行解压即可;
解压后如下:
在这里插入图片描述

2.2 搭建交叉编译环境

这里需要注意的是CC=arm-linux-gcc,生成的文件就是可以在ARM平台上运行的文件;

修改Makefile文件,找到CC=gcc,将其改成CC=arm-linux-gcc,
找到AR=ar,将其改成AR=arm-linux-ar,
找到RANLIB=ranlib,将其改成RANLIB=arm-linux-ranlib。
找到gcc cgictest.o -o cgictest.cgi ${LIBS},将其改成$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS},
找到gcc capture.o -o capture ${LIBS},将其改成$(CC) $(CFLAGS) capture.o -o capture ${LIBS},
保存退出。
	 
修改后的Makefile
	CFLAGS=-g -Wall
	#CROSS_COMPILE=
	CROSS_COMPILE=arm-linux-
	CC=$(CROSS_COMPILE)gcc
	AR=$(CROSS_COMPILE)ar
	RANLIB=$(CROSS_COMPILE)ranlib
	LIBS=-L./ -lcgic
	all: libcgic.a cgictest.cgi capture
	install: libcgic.a    //可以执行 make install 命令  目标
	cp libcgic.a /usr/local/lib
	cp cgic.h /usr/local/include
		@echo libcgic.a is in /usr/local/lib. cgic.h is in /usr/local/include.
	libcgic.a: cgic.o cgic.h  //libcgic.a 依赖于 cgic.c 和 cgic.h  
	rm -f libcgic.a
		$(AR) rc libcgic.a cgic.o  //一个归档命令  ar rc libcgic.a  
		$(RANLIB) libcgic.a  //“ranlib”来对静态库的符号索引表进行更新。 
	#mingw32 and cygwin users: replace .cgi with .exe
	cgictest.cgi: cgictest.o libcgic.a
		$(CC) $(CFLAGS) cgictest.o -o cgictest.cgi ${LIBS}
		#gcc cgictest.o -o cgictest.cgi ${LIBS}
	capture: capture.o libcgic.a
		$(CC) $(CFLAGS) capture.o -o capture ${LIBS}
		#gcc capture.o -o capture ${LIBS}
	clean:
		rm -f *.o *.a cgictest.cgi capture
	
	根据Makefile编译可以看出,有两个拷贝的过程:
cp       libcgic.a    /usr/local/lib  
cp       cgic.h        /usr/local/include
		两个命令的学习:
	ar命令可以用来创建、修改库,也可以从库中提出单个模块。库是一单独的文件,
	里面包含了按照特定的结构组织起来的其它的一些文件(称做此库文件的member)。
	原始文件的内容、模式、时间戳、属主、组等属性都保留在库文件中。 

2.3 注意事项

修改完成Makefile后进行make,生成ARM版本的测试用例;
在这里插入图片描述

在这里插入图片描述
将capture文件拷贝到A9平台的BAO服务器下,放在cgi-bin文件夹下;

三、测试结果

在这里插入图片描述


总结

本期和大家分享的是CGI的移植,其实也是比较简单的,但是真的想要编写CGI程序,大家还是需要花费一定的心思的。虽然目前移植CGI的工作已经完成了,但是还是需要后期花费一定的精力去学习这部分的知识,因为CGI是运行在BOA服务器之上的真正的沟通html和A9主进线程通信的一个桥梁;如果大家的项目小组里有这样的人才,那么大家可以先致力于别的重点模块的理解和开发,最后再来了解这一部分,先用起来,慢慢学习理解!!!
最后,各位小伙伴们如果有收获,可以点赞收藏哦,你们的认可是我创作的动力,一起加油!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/109449.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

NSS刷题 js前端修改 os.path.join漏洞

打算刷一遍nssweb题(任重道远) 前面很简单 都是签到题 这里主要记录一下没想到的题目 [GDOUCTF 2023]hate eat snake 这里 是对js的处理 有弹窗 说明可能存在 alert 我们去看看js 这里进行了判断 如果 getScore>-0x1e9* 我们结合上面 我觉得是6…

人工智能基础_机器学习008_使用正规方程_损失函数进行计算_一元一次和二元一次方程演示_sklearn线性回归演示---人工智能工作笔记0048

自然界很多都是正态分布的,身高,年龄,体重...但是财富不是. 然后我们来看一下这个y = wx+b 线性回归方程. 然后我们用上面的代码演示. 可以看到首先import numpy as np 导入numby 数据计算库 import matplotlib.pyplot as plt 然后导入图形画的库 然后: X = np.linspace(0,…

文件正在使用,操作无法完成。windows查看占用文件的程序

查看占用 tasklist /m IDMShellExt64.dll 映像名称 PID 模块explorer.exe 7452 IDMShellExt64.dll杀死进程 taskkill /f /PID 7452 成功: 已终止 PID 为 7452 的进程。重启explorer explorer

20.3 OpenSSL 对称AES加解密算法

AES算法是一种对称加密算法,全称为高级加密标准(Advanced Encryption Standard)。它是一种分组密码,以128比特为一个分组进行加密,其密钥长度可以是128比特、192比特或256比特,因此可以提供不同等级的安全性…

OpenCV—自动驾驶实时道路车道检测(完整代码)

自动驾驶汽车是人工智能领域最具颠覆性的创新之一。在深度学习算法的推动下,它们不断推动我们的社会向前发展,并在移动领域创造新的机遇。自动驾驶汽车可以去传统汽车可以去的任何地方,并且可以完成经验丰富的人类驾驶员所做的一切。但正确地训练它是非常重要的。自动驾驶汽…

计算机考研 | 2013年 | 计算机组成原理真题

文章目录 【计算机组成原理2013年真题43题-9分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题44题-14分】【第一步:信息提取】【第二步:具体解答】 【计算机组成原理2013年真题43题-9分】 某32位计算机&a…

sql-50练习题6-10

sql练习题6-10题 前言数据库表结构介绍学生表课程表成绩表教师表 0-6 查询"李"姓老师的数量0-7 查询学过"李四"老师授课的同学的信息0-8 查询没学过"李四"老师授课的同学的信息0-9 查询学过编号为"01"并且也学过编号为"02"的…

SMART PLC梯形速度曲线轨迹规划(追剪从轴控制)

在介绍本专栏之前,大家可以参考另一篇博图PLC的梯形加减速点动功能块介绍文章 梯形加减速点动功能块(博途SCL)_RXXW_Dor的博客-CSDN博客文章浏览阅读184次。SMART PLC斜坡函数SMART PLC斜坡函数功能块(梯形图代码)_RXXW_Dor的博客-CSDN博客斜坡函数Ramp的具体应用可以参看下…

港联证券:注册制意味着什么?

跟着我国本钱商场变革的不断深化,注册制在近年来成为了备受关注的论题。注册制的施即将改动原有的核准原则,关于股票和债券的发行,将由事后监管转变为事前挂号审理。那么,注册制意味着什么呢?本文将从经济、商场和出资…

[云原生案例1.] 构建LNMP架构并运行Wordpress个人博客平台

文章目录 1. 当前需求2. 前置准备3. 搭建过程3.1 创建自定义网络3.2 部署并配置nginx3.2.1 创建工作目录并上传相关软件包3.2.2 解压缩相关软件包3.2.3 编写Dockerfile文件3.2.4 编写nginx.conf文件3.2.5 创建nginx镜像3.2.6 运行容器 3.3 部署并配置mysql3.3.1 创建工作目录3.…

一文搞懂Linux线程和进程区别?

1.什么是线程? 线程其实就是轻量级进程(LWP)。 轻量级进程(Light Weight Process)是指在操作系统级别上,将一个进程划分为多个执行单元,每个执行单元拥有自己的堆栈、程序计数器和资源使用情况…

深入探讨Docker生态系统,Docker Compose vs. Docker Swarm vs. Kubernetes:深入比较

文章目录 Docker ComposeDocker SwarmKubernetesDocker Compose适用场景 Docker Swarm适用场景 Kubernetes适用场景 对比和结论 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏&#xf…

Linux(Centos7)防火墙端口操作记录

1、nginx -t #Nginx配置文件检查 上述截图代表检查没问题 上述截图检查配置文件配置错误,并提示错误文件位置 2、systemctl restart nginx #重启Nginx 重启Nginx失败 3、systemctl status nginx.service #查看Nginx服务状态 80端口被占导致服务启动失败 4、n…

【Python 零基础入门】常用内置函数 再探

【Python 零基础入门】内容补充 1 常用内置函数 Python 简介为什么要学习内置函数集合操作len(): 计算长度sorted(): 排序all(): 检查所有元素any(): 检查任一元素filter(): 过滤元素map(): 应用函数zip(): 组合元素 文件操作和输入输出open(): 打开文件read(): 读取文件write(…

微前端qiankun接入Vue和React项目

主应用:Vue3Webpack 1、创建主应用: npx vue create main-vue3-app 2、安装qiankun npx yarn add qiankun 3、项目中使用的vue、vue-router、qiankun依赖如下,webpack版本为5.x 4、在根目录下创建vue.config.js const { defineConfig }…

手机平板摄像头如何给电脑用来开视频会议

环境: Iriun Webcam EV虚拟摄像头 钉钉会议 问题描述: 手机平板摄像头如何给电脑用来开视频会议 解决方案: 1.下载软件 手机端和电脑端都下载这个软件,连接同一局域网打开软件连接好 另外一款软件Iriun 也是一样操作 2.打…

【全志R128外设模块配置】USB外设功能配置

USB 外设功能配置 USB 功能简介 USB 功能模块包括了USB Host,USB Device 和OTG 功能。 USB Host 目前已经支持上的功能有:Mass Storage,UVC。 USB Device 目前已经支持上的功能有:ADB,UAC。 OTG 主要用作Host 与D…

微信小程序的高校报修后勤维修系统

本课题所设计的后勤维修系统,使用微信开发者与java进行开发,它的优点代码不能从浏览器查看,保密性非常好,比其他的后勤维修更具安全性。小程序还容易修改和调试,毕竟维修行业是在不断发展过程中,难免有更多…

大模型问答助手前端实现打字机效果 | 京东云技术团队

1. 背景 随着现代技术的快速发展,即时交互变得越来越重要。用户不仅希望获取信息,而且希望以更直观和实时的方式体验它。这在聊天应用程序和其他实时通信工具中尤为明显,用户习惯看到对方正在输入的提示。 ChatGPT,作为 OpenAI …

【前端框架】本文带你了解nvue

前言 各位公主给👸🏻,王子🤴🏻好,我是你们的Aic山鱼,专注于前端领域的垂直更新。我热衷于分享我的经验和知识,希望能够帮助更多的人在前端领域取得进步。作为一名前端开发人员&#…
最新文章