libxml安装

[size=medium][color=blue]1.PC机环境的安装[/color][/size]
下载安装包:
到官方网站下载安装包,网址:http://xmlsoft.org/downloads.html。我使用的源码包为:libxml2-2.7.8.tar.gz
PC端安装
解压:
#tar zxvf libxml2-2.7.8.tar.gz

解压后,进入目录,并对libxml2进行配置。在PC机上的配置相对比较简单,只需指定相应的安装目录就行了。
#./configure –prefix=/usr/local/arm/libxml_pc
#make
#make install

编译、安装完成后,在/usr/local/arm/libxml_pc目录下会产生四个目录,编译成功。

[size=medium][color=blue]ARM交叉编译、移植[/color][/size]
删除之前的libxml2解压后的目录,对libxml2-2.7.8.tar.gz再一次解压。并配置编译选项。
# ./configure --host=arm-linux --build=i386-linux --target=arm --prefix=/usr/local/arm/libxml_arm CC=/usr/local/arm/4.1.1/bin/arm-9tdmi-linux-gnu-gcc --without-zlib

注:--without-zlib选项很重要,如果不加此选项,make的时候会提示如下错误:
./.libs/libxml2.so: undefined reference to `gzopen'
./.libs/libxml2.so: undefined reference to `gzclose'
./.libs/libxml2.so: undefined reference to `deflate'
./.libs/libxml2.so: undefined reference to `gzrewind'
./.libs/libxml2.so: undefined reference to `gzwrite'
./.libs/libxml2.so: undefined reference to `crc32'
./.libs/libxml2.so: undefined reference to `deflateEnd'
./.libs/libxml2.so: undefined reference to `gzdopen'
./.libs/libxml2.so: undefined reference to `deflateInit2_'
./.libs/libxml2.so: undefined reference to `gzread'
collect2: ld returned 1 exit status

注:arm-9tdmi-linux-gnu-gcc是开发板指定的交叉编译工具,如果使用arm-linux-gcc,在程序运行的时候,会有错误提示:找不到gcclib库文件。这是因为开发板上没有与arm-linux-gcc相关的gcclib库文件。
#make
#make install
安装完成后,在/usr/local/arm/libxml_arm目录下,同样会产生四个目录。然后把lib目录下的库文件拷到开发板上即可。需要拷的文件:
Libxml2.so
libxml2.so.2
libxml2.so.2.7.8
libxml2.la(这个可能不需要)
移植完成。


开发与libxml2相关的应用程序,最好在Makefile中配置两种不同的编译环境和运行环境。
#INCLUDEXML = /usr/local/arm/libxml_arm2/include/libxml2
#LIBXML = /usr/local/arm/libxml/lib
#CC = gcc

INCLUDEXML = /usr/local/arm/cc/include/libxml2
LIBXML = /usr/local/arm/cc/lib
CC = /usr/local/arm/4.1.1/bin/arm-9tdmi-linux-gnu-gcc

DIR = /usr/local/arm/gsoap-linux-2.7

OBJS = main.o order.o parse.o web.o soapC.o soapClient.o stdsoap2.o
CFLAGS = -Wall -I$(DIR) -O2 -I$(INCLUDEXML) -L$(LIBXML) -lxml2

parse: $(OBJS)
$(CC) $(OBJS) $(CFLAGS) -o $@
#$(CC) $(OBJS) -o main

order.o : order.c order.h
$(CC) $(CFLAGS) -c $< -o $@

parse.o : parse.c parse.h
$(CC) $(CFLAGS) -c $< -o $@

web.o : webService/web.c webService/soapH.h webService/Service1Soap12.nsmap
$(CC) $(CFLAGS) -c $< -o $@

soapC.o:webService/soapC.c webService/soapH.h
$(CC) $(CFLAGS) -c $< -o $@

soapClient.o: webService/soapClient.c webService/soapH.h
$(CC) $(CFLAGS) -c $< -o $@

stdsoap2.o: $(DIR)/stdsoap2.c $(DIR)/stdsoap2.h
$(CC) $(CFLAGS) -c $< -o $@

define run-rm
rm -rf *.o *~ .tmp_versions
endef

.PHONY:clean
clean:
$(run-rm)


上面的Makefile比较复杂,它除了编译libxml2文件外,还使用了gsoap调用webService服务。配置了PC机和ARM板上两种不同的运行环境。调试时,用PC机上的可执行环境,生成目标程序则使用arm所需的环境。


[color=blue][size=medium]gsoap生成需要的头文件[/size][/color]
#!/bin/sh
/usr/local/arm/gsoap-linux-2.7/wsdl/wsdl2h -c -o web.h http://172.16.23.69:8089/service/Service1.asmx?wsdl

/usr/local/arm/gsoap-linux-2.7/bin/soapcpp2 -C web.h
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值