首頁 >後端開發 >XML/RSS教程 >Linux下將Tinyxml編譯為靜態函式庫

Linux下將Tinyxml編譯為靜態函式庫

黄舟
黄舟原創
2017-02-23 14:55:222032瀏覽

          轉載請註明來源:Linux下將Tinyxml編譯為靜態庫

  一個應用需要在linux伺服器上運行,不能保證每個伺服器都有應用依賴的庫,又懶得每個伺服器都去安裝下,也不太現實,於是就將應用程式所用到的函式庫全部編譯為靜態函式庫,直接丟到伺服器上跑吧。此為應用程式呼叫xml設定檔依賴tinyxml庫範例,記錄下,備忘。

      1.下載tinyxml函式庫,直接從官方下載,http://www.php.cn/。

      2.解壓縮下載好的包,我解壓縮到test目錄下,進入專案目錄。

      3.使用vim編輯器修改Makefile檔案:

 將其中的OUTPUT := xmltest 修改為:OUTPUT := libtinyxml.a
將xmltest.cpp從一行修改為==== libtinyxml.a
將xmltest.cpp從一行修改為=== tinyxml.cpp tinyxml-parser.cpp xmltest.cpp tinyxmlerror.cpp tinystr.cpp中刪除,,註解掉xmltest.o:tinyxml.h tinystr.h。因為不需要將演示程式新增到動態庫中。
將${LD} -o $@ ${LDFLAGS} ${OBJS} ${LIBS} ${EXTRA_LIBS}修改為:${AR} $@ ${LDFLAGS} ${OBJS} ${LIBS} $ {EXTRA_LIBS}。
儲存退出。

      4.執行make指令編譯,即可在目前目錄產生libtinyxml.a檔。

      5.呼叫測試,目前目錄新建一個test.cpp文件,內容如下:

view sourceprint?01 #include "tinyxml.h"   
02 #include "tinystr.h"     
03 #include <iostream>     
04 using namespace std;   
05      
06 int main()   
07 {   
08     //创建一个XML的文档对象。   
09     TiXmlDocument *myDocument = new TiXmlDocument("test.xml");   
10     myDocument->LoadFile();   
11         
12     //获得根元素,即Persons。   
13     TiXmlElement *RootElement = myDocument->RootElement();   
14      
15     //输出根元素名称,即输出Persons。   
16     cout << RootElement->Value() << endl;   
17           
18     //获得第一个Person节点。   
19     TiXmlElement *FirstPerson = RootElement->FirstChildElement();   
20     //输出接点名Person   
21       
22     cout << FirstPerson->Value() << endl;   
23     //获得第一个Person的name节点和age节点和ID属性。   
24     TiXmlElement *NameElement = FirstPerson->FirstChildElement();   
25     TiXmlElement *AgeElement = NameElement->NextSiblingElement();   
26     TiXmlAttribute *IDAttribute = FirstPerson->FirstAttribute();   
27          
28     //输出第一个Person的name内容,即周星星;age内容,即20;ID属性,即1。   
29     cout << NameElement->FirstChild()->Value() << endl;   
30     cout << AgeElement->FirstChild()->Value() << endl;   
31     cout << IDAttribute->Value() << endl;   
32      
33         return 0;   
34 }

建立test.xml文件,內容如下:

view sourceprint?01 <Persons>   
02     <Person ID="1">   
03         <name>周星星</name>   
04         <age>20</age>   
05     </Person>   
06     <Person ID="2">   
07         <name>白晶晶</name>   
08         <age>18</age>   
09     </Person>   
10 </Persons>

編譯目前文件,呼叫libtinyxml.a函式庫:

[root@server tinyxml]# g++ -o test test.cpp ./libtinyxml.a

執行編譯好的程式:

[root@server tinyxml]# ./test
Persons
Person
周星星
20
1

將編譯好的test和test.xml放到另外一台沒有tinyxml的函式庫,執行成功。

 以上就是Linux下將Tinyxml編譯為靜態函式庫 的內容,更多相關內容請關注PHP中文網(www.php.cn)! 


####
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn