歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu 14.04下libxml2的安裝和使用

Ubuntu 14.04下libxml2的安裝和使用

日期:2017/2/28 14:31:50   编辑:Linux教程

關於libxml2庫的詳細信息的查看方法請查看:http://www.linuxidc.com/Linux/2014-05/101924.htm

Ubuntu 14.04下libxml2庫的安裝方法:

sudo apt-get install libxml2

sudo apt-get install libxml2-dev

利用以上命令安裝完軟件包後可以利用以下命令來查看軟件包的狀態(確定是否安裝成功)

dpkg -s libxml2-dev

也可以用如下命令(得到的結果是一樣的):

dpkg-query -s libxml2-dev

軟件安裝好後,默認情況下,libxml2對應的頭文件均放置在/usr/include/libxml2/libxml目錄下,這一信息可利用如下兩個命令查看(任一命令都能查看到相關信息)

dpkg -L libxml2-dev

xml2-config --cflags

libxml2的庫文件放置在/usr/lib/i386-linux-gnu目錄下,這一信息可利用如下兩個命令查看(任一命令都能查看到相關信息)

dpkg -L libxml2-dev

xml2-config --libs

對應libxml2有一個工具,名字為xml2-config,xml2-config所在的目錄為/usr/bin,其實這是一個shell腳本,關於xml2-config的詳細信息可以通過如下命令來查看

man xml2-config

安裝後libxml2庫後,就可以開始進行基於libxml2庫的開發了。現有以下一段程序,程序文件名為CreateXmlFile.c,是基於libxml2庫開發的。

推薦閱讀

Debian軟件包管理工具apt-get和dpkg操作備忘 http://www.linuxidc.com/Linux/2014-04/99847.htm

Debian編譯內核時err: line 65 dpkg-gencontrol command not found http://www.linuxidc.com/Linux/2014-03/98783.htm

Ubuntu安裝軟件提示“無法打開鎖文件 /var/lib/dpkg/lock ”問題解決 http://www.linuxidc.com/Linux/2013-01/77790.htm

Ubuntu dpkg 安裝軟件 常用參數 http://www.linuxidc.com/Linux/2012-10/73200.htm

Linux-dpkg軟件包和APT軟件包管理操作 http://www.linuxidc.com/Linux/2011-11/47357.htm

Apt-get | dpkg | YUM 使用相關簡介(英文) http://www.linuxidc.com/Linux/2011-06/37526.htm

代碼如下

/**********************************
created: 2014/05/12
filename: CreateXmlFile.c
auther: wang kai
depend: libxml2.lib
purpose: 創建一個xml文件
**********************************/

#include<stdio.h>
#include<libxml/parser.h>
#include<libxml/tree.h>

int main(int argc, char **argv)
{
//Define document pointer
xmlDocPtr doc = xmlNewDoc(BAD_CAST"1.0");

//Define node pointer
xmlNodePtr root_node = xmlNewNode(NULL,BAD_CAST"root");

//Set the root element of the document
xmlDocSetRootElement(doc,root_node);

//Create child nodes directly in the root node
xmlNewTextChild(root_node,NULL,BAD_CAST"newnode1",BAD_CAST"newnode1 content");
xmlNewTextChild(root_node,NULL,BAD_CAST"newnode2",BAD_CAST"newnode2 content");

//Create a new node
xmlNodePtr node = xmlNewNode(NULL,BAD_CAST"node2");
//Create a new text node
xmlNodePtr content = xmlNewText(BAD_CAST"NODE CONTENT");

//Add a new node to parent
xmlAddChild(root_node,node);
xmlAddChild(node,content);
//Create a new property carried by a node
xmlNewProp(node,BAD_CAST"attribute",BAD_CAST"yes");

//Create a son and grandson node element
node = xmlNewNode(NULL,BAD_CAST"son");
xmlAddChild(root_node,node);
xmlNodePtr grandson = xmlNewNode(NULL,BAD_CAST"grandson");
xmlAddChild(node,grandson);
xmlAddChild(grandson,xmlNewText(BAD_CAST"THis is a grandson node"));

//Dump an XML document to a file
int nRel = xmlSaveFile("CreatedXml.xml",doc);
if(nRel != -1)
printf("一個xml文檔被創建,寫入 %d 個字節\n",nRel);

//Free up all the structures used by a document,tree included
xmlFreeDoc(doc);
//printf("Hello World!\n");
return 0;
}

對這個程序進行編譯時,可用以下命令

gcc -I/usr/include/libxml2 CreateXmlFile.c -o CreateXmlFile -L /usr/lib/i386-linux-gnu -lxml2

其中,-I參數是為了指定gcc編譯器查找頭文件的路徑,-L參數是為了指定libxml2庫文件所在的路徑,最後的-lxml2指定具體的庫文件。(-lxml2一定要放在命令的最後位置,不然會出現找不到鏈接庫的錯誤,如下圖所示)

具體為什麼一定要把-lxml2放在最後的位置,本人目前還沒弄明白,有待進一步研究

編譯命令也可以寫成如下形式:

gcc `xml2-config --cflags` -L /usr/lib/i386-linux-gnu CreateXmlFile.c -o CreateXmlFile -lxml2

gcc `xml2-config --cflags` CreateXmlFile.c -o CreateXmlFile -L /usr/lib/i386-linux-gnu -lxml2

gcc CreateXmlFile.c -o CreateXmlFile `xml2-config --cflags --libs`

形式雖然不一樣,其實命令的實際內容是一樣的。因為命令xml2-config --cflags的執行結果為

-I/usr/include/libxml2 (指明include頭文件所在的目錄)

命令xml2-config --libs的執行結果為

-L/usr/lib/i386-linux-gnu -lxml2 (指明libxml2庫文件所在的目錄以及具體的庫文件)

(不管寫成何種形式,只要保證 -lxml2 在編譯命令的最後位置即可)

升級Linux自帶libxml2庫 在RedHat Linux上安裝php-5.2.5 http://www.linuxidc.com/Linux/2008-05/12749.htm

Ubuntu libxml2 http://www.linuxidc.com/Linux/2007-10/8075.htm

Libxml2在Linux下的使用 http://www.linuxidc.com/Linux/2014-01/95402.htm

Ubuntu下用arm-none-linux-gnueabi交叉編譯libxml2 http://www.linuxidc.com/Linux/2014-05/101902.htm

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

Copyright © Linux教程網 All Rights Reserved