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
安装
./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