SOAP嵌入式linux下的應(yīng)用使用方法(一)
Simple Object Access Protocol(SOAP)簡單對象訪問協(xié)議,是交換數(shù)據(jù)的一種協(xié)議規(guī)范,是一種輕量的、簡單的、基于XML(標(biāo)準通用標(biāo)記語言下的一個子集)的協(xié)議,它被設(shè)計成在WEB上交換結(jié)構(gòu)化的和固化的信息。
這里介紹soap嵌入式linux下的使用。
一、gSOAP
選擇gSOAP的原因:
gSOAP編譯工具提供了一個SOAP/XML 關(guān)于C/C++ 語言的實現(xiàn),從而讓C/C++語言開發(fā)web服務(wù)或客戶端程序的工作變得輕松了很多。絕大多數(shù)的C++web服務(wù)工具包提供一組API函數(shù)類庫來處理特定的SOAP數(shù)據(jù)結(jié)構(gòu),這樣就使得用戶必須改變程序結(jié)構(gòu)來適應(yīng)相關(guān)的類庫。與之相反,gSOAP利用編譯器技術(shù)提供了一組透明化的SOAP API,并將與開發(fā)無關(guān)的SOAP實現(xiàn)細節(jié)相關(guān)的內(nèi)容對用戶隱藏起來。
可移植性:gSOAP支持大多 數(shù)平臺,包括嵌入式系統(tǒng)和小系統(tǒng)(例如嵌入式Symbian,Palm)??梢浦残詼y試Windows(98,XP,Vista),Linux,Unix 系統(tǒng),Mac OS X,Solaris,HP-UX,AIX,F(xiàn)reeBSD,TRU64,Irix,QNX,VxWorks。
二、gSOAP的移植
1、下載源碼
http://sourceforge.net/projects/gsoap2/files/
http://jaist.dl.sourceforge.net/project/gsoap2/gSOAP/gsoap_2.8.24r.zip
本例下載版本為:gsoap_2.8.24r.zip
2、解壓源碼
$ unzip gsoap_2.8.24r.zip
3、編譯x86 平臺下工具
配置源碼
$ ./configure --prefix=/home/linux/gsoap/gsopa-x86
配置一些特性,比如目標(biāo)平臺安裝路徑等,如上配置目標(biāo)平臺為x86架構(gòu),安裝路徑為/home/linux/gsoap/gsoap-x86
編譯源碼
$ make
安裝源碼到/home/linux/gsoap/gsoap-x86目錄
$ make install
4、編譯arm平臺工具
./configure --prefix=/home/linux/gsoap/gsopa-arm --host=arm-linux
再次配置源碼,這次配置目標(biāo)平臺變?yōu)閍rm-linux
修改源碼,根據(jù)編譯錯誤提示進行適當(dāng)修改:
修改源碼目錄下的config.h
注釋掉:
#define malloc rpl_malloc
soapcpp和wsdl2h在編譯過程中會生成同事這兩個工具也在編譯時會被用來生成一些特定的文件,所以如果soapcpp和wsdl2h如果被編譯成arm架構(gòu)則無法在PC上執(zhí)行,也就意味著接下的編譯無法完成,所以這里選擇不編譯這兩個文件,而選擇使用上節(jié)編譯所生產(chǎn)的x86架構(gòu)的對應(yīng)文件。
修改gsoap/src/Makefile
注釋掉
soapcpp2$(EXEEXT): $(soapcpp2_OBJECTS) $(soapcpp2_DEPENDENCIES) $(EXTRA_soapcpp2_DEPENDENCIES)
@rm -f soapcpp2$(EXEEXT)
$(AM_V_CCLD)$(soapcpp2_LINK) $(soapcpp2_OBJECTS) $(soapcpp2_LDADD) $(LIBS)
修改gsoap/wsdl/Makefile
wsdl2h$(EXEEXT): $(wsdl2h_OBJECTS) $(wsdl2h_DEPENDENCIES) $(EXTRA_wsdl2h_DEPENDENCIES)
@rm -f wsdl2h$(EXEEXT)
$(AM_V_CXXLD)$(wsdl2h_LINK) $(wsdl2h_OBJECTS) $(wsdl2h_LDADD) $(LIBS)
拷貝x86架構(gòu)下的soapcpp和wsdl2h到工程源碼目錄下:
$ cp /home/linux/gsoap/gsoap-x86/bin/soapcpp2 /home/linux/gsoap/gsoap-2.8/gsoap/src/
$ cp /home/linux/gsoap/gsoap-x86/bin/wsdl2h /home/linux/gsoap/gsoap-2.8/gsoap/wsdl/
編譯
$ make
安裝
make install