soap下载地址为:
将下载的安装包解压,并拷贝到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 -vhttp://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_2SOAP_FMAC1intSOAP_FMAC2soap_rand(){ unsigned char buf[4]; if (!soap_ssl_init_done) soap_ssl_init(); RAND_pseudo_bytes(buf, 4); return *(int*)buf;} //#endif//#endif