soap下载地址为:http://www.cs.fsu.edu/~engelen/soap.html
将下载的安装包解压,并拷贝到linux的操作目录,本人操作目录为:
$: /home/orange
安装编译工具:
$sudo apt-get install build-essential
为了成功编译gSOAP,您需要安装GTK+的开发文件和GLib库(libraries)。
$sudo apt-get install libgtk2.0-dev libglib2.0-dev
以上面的目录为例:
首先进入目录cd /home/orange/gsoap-2.8/
然后,配置编译环境:
命令:$:sudo ./configure
然后,编译连接
命令:$:sudo make
最后,安装gSOAP
命令:$:sudo make install
遇到的问题及解决方案如下:
遇到的问题1:
make[4]: 正在进入目录 `/home/titus/OpenComponent/gsoap-2.8/gsoap/src‘
/bin/bash http://www.cnblogs.com/ylwrap soapcpp2_yacc.y y.tab.c soapcpp2_yacc.c y.tab.h soapcpp2_yacc.h y.output soapcpp2_yacc.output -- yacc -d -v
http://www.cnblogs.com/ylwrap: line 111: yacc:找不到命令
make[4]: *** [soapcpp2_yacc.c] 错误 1
原因:
没有安装:yacc(Yet Another Compiler Compiler),是Unix/Linux上一个用来生成编译器的编译器(编译器代码生成器)。
解决方案:
sudo apt-get install flex bison
遇到的问题2:
http://www.cnblogs.com/gsoap/stdsoap2.h:695: fatal error: openssl/bio.h: 没有那个文件或目录
compilation terminated.
make[5]: *** [wsdl2h] 错误 1
原因:是缺少openssl的相应的头文件
解决方案:
sudo apt-get install openssl
为了安装OpenSSL通常的库文件,首先使用以下命令来确定在Ubuntu系统中可获得的库文件的应用版本:
sudo apt-cache search libssl | grep SSL
sudo apt-get install libssl-dev
遇到的问题3:
‘soap_rand’未定义引用
解决方案:
修改gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.h
//#if defined(WITH_OPENSSL)
# define soap_random soap_rand()
SOAP_FMAC1 int SOAP_FMAC2 soap_rand(void);
/*
#elif defined(HAVE_RANDOM)
# define soap_random (int)random()
#else
# define soap_random rand()
#endif
*/
修改gsoap/VisualStudio2005/wsdl2h/wsdl2h/stdsoap2.cpp
//#ifdef WITH_OPENSSL
//#ifndef PALM_2
SOAP_FMAC1
int
SOAP_FMAC2
soap_rand()
{ unsigned char buf[4];
if (!soap_ssl_init_done)
soap_ssl_init();
RAND_pseudo_bytes(buf, 4);
return *(int*)buf;
}
//#endif
//#endif