libxml安装
发布日期:2022-02-24 11:36:04 浏览次数:8 分类:技术文章

本文共 2914 字,大约阅读时间需要 9 分钟。

[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

转载地址:https://blog.csdn.net/iteye_17609/article/details/82066604 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:android 邮件开发(javax.mail)
下一篇:uddi4j传入juddi中文字符失败

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年03月30日 14时42分14秒