Tinyxml的嵌入式Linux实现
这两天项目需要在嵌入式Linux系统上实现Tinyxml解析简单的xml文件,于是在网上查找并收集了一点资料,现在补充完善!
一、源码下载:
https://github.com/xant/XML-TinyXML
http://sourceforge.net/projects/tinyxml/
版本:tinyxml_2_6_2.zip
二、动态链接库的实现
首先修改 Makefile文件:
(1)将"CXX:=g++"改为"CXX:=arm-linux-g++""CC:=arm-linux-gcc"
"LD:=arm-linux-g++","RANLIB:=arm-linux-ranlib"即将编译器由g++改为交叉编译器;
(2) 将"OUTPUT:=xmltest"改为"OUTPUT:=libtinyxml.so",即将原来生成演示程序改为生成动态链接库libtinyxml.so;
(3)将xmltest.cpp从"SRCS:=tinyxml.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp"中删除,注释掉"xmltest.o:tinyxml.h tinystr.h"。因为不需要将演示程序添加到动态库中;
(4)在"${LD}-o$@${LDFLAGS)${OBJS}${LIBS}${EXTRA_LIBS}"语句的"${LD)"后添加
"-shared",用于生成动态库。
修改完成后,执行make命令就可以在当前目录生成需要的动态链接库文件libtinyxml.so,也可以根据需要把TinyXml编译成静态库文件。把生成的libtinyxml.so文件拷贝到嵌入式系统下的/usr/lib即可,经过交叉编译源程序即可实现在嵌入式系统下解析xml文件
三、静态链接库的实现
修改Makefile文件
(1)、同上动态链接库;
(2)、将"OUTPUT:=xmltest"改为"OUTPUT:=libtinyxml.a",即将原来生成演示程序改为生成静态链接库libtinyxml.a;
(3)、同上
(4)、将"${LD}-o$@${LDFLAGS)${OBJS}${LIBS}${EXTRA_LIBS}"改为"${AR}$@ ${LDFLAGS) ${OBJS} ${LIBS} ${EXTRA_LIBS}"
修改完成后,执行make命令就可以在当前目录生成需要的静态链接库文件libtinyxml.a,也可以根据需要把TinyXml编译成静态库文件。静态链接库只在编译时加入至编译命令即可,amr-linux-g++ test –static –o test.cpp ./libtinyxml.a
,即可生成test文件,有用是静态编译,生成可执行文件较大,拷贝到嵌入式系统中即可。
后记:在移植Tinyxml过程中,发现对shell指令不熟悉,没有区分好空格和tab键导致出错,后来在交叉编译静态链接库时,没有加入-static选项,生成可执行文件后无法运行出错,出错,都是需要不断积累的。
四、参考文献
引文:《基于TinyXml的嵌入式Linux》
链接:
http://www.eepw.com.cn/article/67219.htm