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