环境: Ubuntu10.04 平台:openwrt 架构:mips
源代码:gsoap 2.8.33.zip
gsoap工具包中支持的平台是:macosx、win32 linux版本没有编译出来,更没有嵌入式mips平台的,接下来编译linux平台和mips嵌入式平台工具
交叉编译工具:OpenWrt-Toolchain-ar71xx-for-mips_r2-gcc-4.6-linaro_uClibc-0.9.33.2
一、编译linux平台下工具,这个比较好安装
1、把源码包放进Ubuntu 建好工作目录
2、解压源码包:unzip gsoap_2.8.33.zip
3、解压后进入源代码目录:cd gsoap-2.8/
4、生成Makfile文件:./configure--prefix=/usr/local/gsoap-x86 --disable-ssl
注意:不加--disable-ssl ,会出一些错误,要安装很多配件,也可以不加 ,根据错误安装。按需求是否需要
5、make
6、make install
编译安装完全后会在/usr/local/gsoap-x86生成相关工具,gsoap-2.8/src/、gsoap-2.8/wsdl/也会有相关工具
二、编译mips平台gsoap工具
1、make distclean
./configure--prefix=/usr/local/gsoap-mips --host=mips-openwrt-linux-uclibc --disable-ssl
注意:mips-openwrt-linux-uclibc交叉编译工具要弄好,可在/etc/profile 文件中添加path
然后source /etc/profile
2、生成的config.h有点问题,需自己修改下,屏蔽#definemalloc rpl_malloc,不然编译会报malloc相关错误
3、make 会报错../../gsoap/src/soapcpp2:../../gsoap/src/soapcpp2:无法执行二进制文件
为什么会报这个错呢??
是由于make过程中mips框架下的soapcpp2已经生成了,覆盖掉了之前x86框架下的soapcpp2,但是有由于后续的make过程中还需要x86框架下的soapcpp2做一些事,而文件变成mips框架下的了,所以就执行不了二进制文件。现在就用到了我们之前编译在/usr/local/gsoap-x86的工具,将其复制到相关目录即可
cp /usr/local/gsoap-x86/bin/wsdl2h /home/farsight/openwrt/gsoap-2.8/gsoap/wsdl/
cp /usr/local/gsoap-x86/bin/soapcpp2 /home/farsight/openwrt/gsoap-2.8/gsoap/src/
4、make install 成功;gsoap-2.8/src/、gsoap-2.8/wsdl/ 下会有我们所需的工具 mips架构的
然而还是有点问题的 就是我们在/usr/local/gsoap-mips下的工具,确是x86的,可能是cp那部分影响的,但我们不需要关心了 ,我们用gsoap-2.8/src/、gsoap-2.8/wsdl/下的工具就好了
注意:
补充:安全用户名和密码是采用openssl库和gsoap的自带的控件, 采用下列接口soap_wsse_verify_Password soap_wsse_verify_Timestampsoap_wsse_get_Username openssl 编译
tar zxvf openssl-0.9.8.tar.gz cdopenssl-0.9.8
./config no-asm --prefix=/opt/opensslos/compiler: /ToolChain/bin/ arm-none-linux-gnueabi-g++ make
make install
之后进入到/opt/openssl 拷贝头文件和库
以上经过各大神的文章学习,总结的