有坑,小心!!!mxml安裝記錄
轉:
http://blog.sina.com.cn/s/blog_88ea0ce70101a708.html
https://blog.csdn.net/bbzhaohui/article/details/71512599
1.原始碼獲取路徑:
http://michaelrsweet.github.io/mxml/
可以直接下載.tar.gz包解壓安裝,或者直接通過github fork到自己的倉庫,git到自己本地安裝,關於github和git原始碼在下篇中再講,現在講解如何通過.tar.gz包安裝。
現假定你已獲取原始碼包並已成功放入到虛擬機器Ubuntu目錄下。
關於如何把檔案從window傳到虛擬機器安裝的系統中,可自行百度,或者有必要的話,下次再開篇博文。
2.首先解壓mxml-2.10.tar.gz檔案:
tar -xzvf mxml-2.10.tar.gz
3.編譯安裝
進入到解壓後的檔案目錄:
設定環境./configure
編譯make
安裝 make install 注意root許可權才可以安裝,否則會提示許可權不夠 sudo make install
以上步驟順利完成後,mini_xml庫就已經安裝到你的Linux系統中了。
以後就可以直接呼叫標頭檔案 #include “mxml.h”使用了。
4.編譯自帶測試程式
下面用原始碼中自帶的測試程式,先了解下大致功能
原始碼中有一個testmxml.c的檔案就是測試程式,現編譯成可執行檔案
gcc -o testmxml testmxml.c
提示錯誤:
testmxml.c:(.text+0x1655):對‘mxmlSAXLoadFile’未定義的引用
/tmp/cc9KVjbn.o:在函式‘type_cb’中:
testmxml.c:(.text+0x1827):對‘mxmlElementGetAttr’未定義的引用
collect2: error: ld returned 1 exit status
動態連結庫未在編譯時連結進去,修改
gcc -o testmxml testmxml.c -lmxml
再編譯:
//usr/local/lib/libmxml.so:對‘pthread_getspecific’未定義的引用
//usr/local/lib/libmxml.so:對‘pthread_key_create’未定義的引用
//usr/local/lib/libmxml.so:對‘pthread_once’未定義的引用
//usr/local/lib/libmxml.so:對‘pthread_setspecific’未定義的引用
//usr/local/lib/libmxml.so:對‘pthread_key_delete’未定義的引用
collect2: error: ld returned 1 exit status
還是有錯誤,看提示資訊是pthread執行緒相關動態庫未連結進來,繼續修改
gcc -o testmxml testmxml.c -lmxml -lpthread
這次便編譯成功了
5.出現問題吧!!!
出現這個問題沒?
:error while loading shared libraries: libmxml.so.1: cannot open sharedobject
這是由於共享庫檔案安裝到了/usr/local/lib中,程式按照預設共享路徑找不到該共享檔案。因此,需要將目錄/usr/local/lib加到系統共享庫配置檔案/etc/ld.so.conf中
#cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
#include “/usr/local/lib” >> /etc/ld.so.conf
#ldconfig
注:ldconfig命令的用途:在預設搜尋目錄(/lib和/usr/lib)以及動態庫配置檔案/etc/ld.so.conf內所列的目錄下,搜尋出可共享的動態連結庫(格式如:lib*.so*),進而創建出動態裝入程式(ld.so)所需的連線和快取檔案.快取檔案預設為/etc/ld.so.cache,此檔案儲存已排好序的動態連結庫名字列表.
6.執行
./testmxml
提示資訊:
Usage: testmxml filename.xml [string-output.xml]
說明輸入引數需要有一個.xml檔案,或者一個可選的輸出.xml檔案。
第一個檔案必須要在testmxml同一目錄下存在
如在源程式中已經存在一份test.xml檔案
重新執行:
./testmxml test.xml
就會把test.xml檔案中的內容顯示出來了。
如果執行:
./testmxml test.xml testnew.xml
就會把test.xml檔案中的內容複製到testnew.xml檔案中,同時會顯示在介面上。