20 May 2010linux
一個輕量級的xml庫,可完成讀寫。適合系統資源受限的嵌入式設備。測試
(http://www.minixml.org/)spa
首先準備好交叉編譯環境。我使用的是eabi生成的arm-linux-gcc 4.3.2,位於/usr/local/arm/4.3.2/
;環境變量已經設置/usr/local/arm/4.3.2/bin
。code
主機環境xml
目標機環境資源
下載源碼,獲得mxml-2.6.tar.gz
開發
解壓,進入mxmx-2.6
編譯器
./configure --enable-shared --host=arm-linux make
接着make報錯:源碼
Testing library... ./testmxml test.xml > temp1.xml 2 > temp1s.xml make: *** [testmxml] 錯誤 2
這是測試編譯出的可執行文件是否能夠正常運行時失敗的結果。廢話,arm-linux-gcc編譯出的東西在主機上顯然不能運行。編譯
可是在 Testing library 以前,編譯已經所有結束。咱們能夠直接拿走要用的文件。
有用的文件一共 5個:
mxml.h
頭文件libmxml.a
靜態連接庫文件libmxml.so
動態連接庫的連接文件,連接到libmxml.so.1.4
libmxml.so.1
動態連接庫的連接文件,連接到libmxml.so.1.4
libmxml.so.1.4
動態連接庫本體把庫文件複製到交叉編譯鏈所在位置:
我之因此沒有在configure的時候直接設定prefix,是由於 eabi生成的編譯鏈的文件結構有點詭異,頭的存放目錄和庫文件存放目錄不在一個父目錄下。
mxml.h → /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include libmxml.a → /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib libmxml.so → /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib libmxml.so.1 → /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib libmxml.so.1.4 → /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
對於其餘版本的 gcc,路徑極可能不同。在這裏咱們應該靈活處理。
在交叉編譯鏈所在目錄中:
mxml.h
,以保證編譯器能找到該文件.so
文件的目錄(通常有多個),每一個都把動態連接庫和靜態連接庫的全部文件放進去。以保證編譯器能找到。在庫文件和頭文件就位後,咱們就能夠在項目中使用 libmxml 了。
使用方法:
一、添加
#include <mxml.h>
二、增長編譯參數
例如
arm-linux-gcc -o test test.c -lmxml -lpthread
其中-lpthread是必選參數,由於libmxml庫用到了pthread庫
在編譯時,編譯器會優先選擇動態連接庫編譯,這樣編譯出的文件會小不少。可是同時也須要目標板上有動態連接庫支持。若是想靜態編譯,在編譯參數中加上-static
爲目標機添加動態連接庫
將
複製到目標板的庫目錄,通常爲/lib
或/usr/lib
這樣,動態編譯的文件就能在目標板上運行了。