IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Centos7编译安装ONVIF框架代码 -> 正文阅读

[系统运维]Centos7编译安装ONVIF框架代码

1、前言

环境:Win10主机+VMware15.5+Centos7.9

登录用户:root

目标:采用从ONVIF官网下载的最新版本WSDL(Ver.21.12)文件,在Centos上用gsoap_2.8.119编译生成ONVIF框架代码(C++版)。

2、准备工作

2.1 准备编译环境

yum -y install bison flex

2.2 编译安装openssl

1、代码下载

/source/old/1.0.2/index.html

?2、解压缩

tar -xzf openssl-1.0.2h.tar.gz
cd openssl-1.0.2h

3配置安装目录

./config --prefix=/usr/local/ssl

4执行命令

./config -t

5、编译安装

make
make install

6、配置环境变量

echo /usr/local/ssl/lib >> /etc/ld.so.conf
ldconfig

2.3?编译安装gsoap

1、代码下载

gSOAP Toolkit - Browse Files at SourceForge.neticon-default.png?t=M5H6https://sourceforge.net/projects/gsoap2/files/gsoap_2.8.119.zip/download

2、解压缩

unzip gsoap_2.8.119.zip
cd gsoap-2.8

3、配置编译安装

./configure --with-openssl=/usr/local/ssl --prefix=/usr/local/gsoap-2.8
make
make install

4、编译过程中,出现链接openssl库失败的问题。修改gsoap-2.8/gsoap/wsdl下的Makefile,在277行加上-ldl,然后重新编译即可通过。

3、基于gsoap生成onvif C++框架代码?

3.1 获取wsdl

可以从ONVIF官网下载最新版本的wsdlxsd文件。按照自己的需求下载相应文件。因文件依赖关系不确定,一般是全部下载,完整文件是33个。

Home - ONVIF Mandarin

?

?从官网下载的wsdl文件,可以在线和离线2种模式生成框架。因网络等问题,建议离线编译。但直接下载的wsdlxsd文件,不能直接编译,需要修改各个文件中的schemaLocationlocation标签的路径值,改法见下截图

?

?

或者可以从这里获取所有的wsdlxsd文件,里边所有路径均已修改过,可直接离线编译。

onvif_wsdl_Ver.21.12(schemaLocation和location已改为绝对路径)-C++文档类资源-CSDN下载上次提交的onvifwsdl文件,里边的schemaLocation和location没有改成绝对更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/chexlong/85030758

3.2 配置编译生成框架

1、修改/gsoap-2.8/gsoap/目录下typemap.dat文件

由于后续编译源代码需要用到 duration.c 文件,会遇到类型LONG64报错的问题,需要在typemap.dat 文件中取消以下行的注释:

xsd__duration = #import “custom/duration.h” | xsd__duration

2、拷贝到/usr/local/gsoap-2.8/bin

cp typemap.dat /usr/local/gsoap-2.8/bin/

3、将wsdl和xsd文件拷贝放到/usr/local/gsoap-2.8/ onvif_wsdl目录下

4、

cd /usr/local/ gsoap-2.8/ bin/

5、使用wsdl2h编译生成onvif.h文件

./wsdl2h -P -x -c++ -s -t ./typemap.dat -o onvif.h /usr/local/gsoap-2.8/onvif_wsdl/accesscontrol.wsdl /usr/local/gsoap-2.8/onvif_wsdl/accessrules.wsdl /usr/local/gsoap-2.8/onvif_wsdl/actionengine.wsdl /usr/local/gsoap-2.8/onvif_wsdl/advancedsecurity.wsdl /usr/local/gsoap-2.8/onvif_wsdl/analytics.wsdl /usr/local/gsoap-2.8/onvif_wsdl/authenticationbehavior.wsdl /usr/local/gsoap-2.8/onvif_wsdl/credential.wsdl /usr/local/gsoap-2.8/onvif_wsdl/deviceio.wsdl /usr/local/gsoap-2.8/onvif_wsdl/devicemgmt.wsdl /usr/local/gsoap-2.8/onvif_wsdl/display.wsdl /usr/local/gsoap-2.8/onvif_wsdl/doorcontrol.wsdl /usr/local/gsoap-2.8/onvif_wsdl/event.wsdl /usr/local/gsoap-2.8/onvif_wsdl/imaging.wsdl /usr/local/gsoap-2.8/onvif_wsdl/media.wsdl /usr/local/gsoap-2.8/onvif_wsdl/media_h265.wsdl /usr/local/gsoap-2.8/onvif_wsdl/provisioning.wsdl /usr/local/gsoap-2.8/onvif_wsdl/ptz.wsdl /usr/local/gsoap-2.8/onvif_wsdl/receiver.wsdl /usr/local/gsoap-2.8/onvif_wsdl/recording.wsdl /usr/local/gsoap-2.8/onvif_wsdl/replay.wsdl /usr/local/gsoap-2.8/onvif_wsdl/schedule.wsdl /usr/local/gsoap-2.8/onvif_wsdl/search.wsdl /usr/local/gsoap-2.8/onvif_wsdl/thermal.wsdl /usr/local/gsoap-2.8/onvif_wsdl/uplink.wsdl

6、修改生成的onvif.h及wsa5.h

因为鉴权的需要,在onvif.h头文件中加入#import "wsse.h"。

避免接下来产生框架发生错误,修改/usr/local /gsoap-2.8/ share/gsoap /import路径下的wsa5.h,将SOAP_ENV__Fault结构体名字修改为SOAP_ENV__Fault_alex。

7、使用soapcpp2生成C++代码

cd /usr/local/ gsoap-2.8 /share/gsoap
../../bin/soapcpp2  -2 -x -j -I ./import ./custom -d samples/onvif/ ../../bin/onvif.h

生成的框架代码在./samples/onvif/ 目录下

3.3 整理框架代码

1、所有的. nsmap文件都一样,任选一个,将文件名字改为wsdd.h,其它的可以删除。

2、拷贝插件文件

cp plugin/mecevp.h plugin/mecevp.c plugin/smdevp.h plugin/smdevp.c plugin/threads.h plugin/threads.c plugin/wsaapi.h plugin/wsaapi.c plugin/wsseapi.h plugin/wsseapi.c custom/duration.c custom/duration.h custom/struct_timeval.h custom/struct_timeval.c /usr/local/onvif/plugin
cp dom.cpp  /usr/local/onvif/plugin

?将以上所有.c文件改成.cpp

3、拷贝框架代码

如果是开发onvif客户端程序,则拷贝相关的soapXXXBindingProxy.h,soapXXXBindingProxy.cpp到/usr/local/onvif/linux_api_proxy

如果是开发onvif服务端程序,则拷贝相关的soapXXXBindingService.h,soapXXXBindingService.cpp到/usr/local/onvif/linux_api_service

4、引用框架代码时,添加预处理宏WITH_OPENSSL?

4、参考

编译过程中,参考了下边网友的文章,在此感谢。

  1. centos7 搭建onvif C++框架总结_sxjkl10的博客-CSDN博客
  2. Centos7 搭建Onvif C++框架(基于gSoap-2.8.106)_Gazzy1110的博客-CSDN博客
  3. ONVIF协议网络摄像机(IPC)客户端程序开发(6):使用gSOAP生成ONVIF框架代码_许振坪的博客-CSDN博客
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-25 18:26:09  更:2022-06-25 18:29:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 17:38:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码