基于ONVIF协议的(IPC)客户端程序开发-6:Gsoap-2.8编译

1、gSOAP下载地址:

https://sourceforge.net/projects/gsoap2/files/ 

2、gSOAP工具主要包括两个可执行文件:wsdl2h和soapcpp2。wsdl2h可以读取.wsdl格式文件并输出.h文件,而soapcpp2则可以读取.h格式文件(wsdl2h生成的或者包含用户自己定义的接口)生成server端和client端的框架。 

3、 解压

zip gsoap_2.8.59.zip

解压以后可以在gsoap/bin文件夹发现有 macosx 和 win32 两个平台的已经编译好的可以执行文件。没有linux平台的。gSOAP生成server端和client端的框架是可以平台使用的,所以如果你完全可以在windows平台上生成你需要的。

4、根据README.txt文件需要这些依赖库 

 OpenSSL、 zlib、bison、flex 

5、安装openssl

 下载地址:https://www.openssl.org/ 

  安装

 ./config --prefix=/work/my/code/ipc/onvif/openssl no-shared

6、安装zlib

 下载地址:http://download.csdn.net/download/u013399786/9905693

 ./configure --shared --prefix=/work/my/code/zip/zlib

6、配置gsop 由于我的zlib和OpenSSL 都没有在系统目录,因此要指定安装目录

./configure --prefix=/work/my/code/ipc/onvif/gsoap --with-zlib=/work/my/code/zip/zlib/ --with-openssl=/work/my/code/ipc/onvif/openssl/  

7、编译 错误解决

   a、错误1

s/c$/h/` y.output soapcpp2_yacc.output -- yacc -d -v 
../../ylwrap: line 176: yacc: command not found
Makefile:521: recipe for target 'soapcpp2_yacc.c' failed
编译出错 : yacc: 未找到命令 , 需要安装yacc

$sudo apt-get install bison
  b、 错误2

/bin/bash ../../ylwrap soapcpp2_lex.l .c soapcpp2_lex.c -- /bin/bash /home/test/Downloads/gsoap-2.8/missing flex 
updating lex.yysoapcpp2_lex.c 

编译出错 : flex: 未找到命令 , 需要安装flex

sudo apt-get install flex
  

  c、可能还要安装 openssl的库文件

sudo apt-get install libssl-dev

  d、错误3

dso_dlfcn.c:(.text+0x11):对‘dlopen’未定义的引用

 缺少dl库,修改configure 在下面-lz后面加 -ldl

WSDL2H_EXTRA_LIBS="${WSDL2H_EXTRA_LIBS} -lssl -lcrypto -lz -ldl"
    
SAMPLE_SSL_LIBS="-lssl -lcrypto -lz -ldl"
8、安装

 make install
最后在安装的/bin目录下生成  soapcpp2 wsdl2h

9、测试

wsdl2h -h
   结果:

root@ubuntu16:/work/my/code/ipc/onvif/gsoap/bin# ./wsdl2h -h 
Usage: wsdl2h [-a] [-b] [-c|-c++|-c++11] [-D] [-d] [-e] [-f] [-g] [-h] [-I path] [-i] [-j] [-k] [-l] [-m] [-M] [-N name] [-n name] [-P|-p] [-q name] [-R] [-r proxyhost[:port[:uid:pwd]]] [-r:userid:passwd] [-s] [-Sname] [-t typemapfile] [-U] [-u] [-V] [-v] [-w] [-W] [-x] [-y] [-z#] [-_] [-o outfile.h] infile.wsdl infile.xsd http://www... ...

-a      generate indexed struct names for local elements with anonymous types
-b      bi-directional operations (duplex ops) added to serve one-way responses
-c      generate C source code
-c++    generate C++ source code (default)
-c++11  generate C++11 source code
-d      use DOM to populate xs:any, xs:anyType, and xs:anyAttribute
-D      make attribute members with default values optional with pointers
-e      don't qualify enum names
-f      generate flat C++ class hierarchy
-g      generate global top-level element declarations
-h      display help info
-Ipath  use path to find files
 说明安装成功

如果出现
wsdl2h: error while loading shared libraries: libssl.so.1.0.0: cannot open shared object file: No such file or directory

提示找不到OpenSSL动态库文件,解决方法:

1.将.so文件路径「/usr/local/ssl/lib」追加到/etc/ld.so.conf文件末尾。

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

       2.使得修改立刻生效:
$ ldconfig










  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值