ubuntu下编译和使用libxml2

来源:互联网 发布:淘宝客真的能赚钱吗 编辑:程序博客网 时间:2024/06/05 18:35

http://blog.csdn.net/yuhongq/article/details/4325872

      最近一直在找ubuntu下面的东西。因为工作的需要今天找了一个解析xml的垮平台库。在网上找了找看看libxml2还不错,就打算试试。

      首选在网上找说用#sudo apt-get install libxml2 这个命令就可以。我输入后得到结果是我的ubuntu上已经安装了这个库。我就在文件系统上找,发现在/usr/share/doc下面确实有一个libxml2的文件夹,但是进里面找不到头文件。我编译在网上找的一段代码程序,发现也编译不过。后来在网上找了半天,才发现用的命令不对。后来用#sudo apt-get install libxml2-dev 这个命令算是安装上了。所有的头文件在/usr/include/libxml2/这个文件目录下,lib文件在/usr/lib在这个下面。

      下面是在网上找的一段测试linxml2库是否装上的代码。

#include <stdio.h> 
#include <libxml/parser.h>
#include <libxml/tree.h>
int main(int argc, char **argv)
{
  xmlDocPtr doc = NULL;
  xmlNodePtr root_node = NULL, node = NULL, node1 = NULL;
  doc = xmlNewDoc(BAD_CAST "1.0");
  root_node = xmlNewNode(NULL, BAD_CAST "root");
  xmlDocSetRootElement(doc, root_node);
  xmlNewChild(root_node, NULL, BAD_CAST "node1",BAD_CAST "content of node1");
  node=xmlNewChild(root_node, NULL, BAD_CAST "node3",BAD_CAST"node has attributes");
  xmlNewProp(node, BAD_CAST "attribute", BAD_CAST "yes");
  node = xmlNewNode(NULL, BAD_CAST "node4");
  node1 = xmlNewText(BAD_CAST"other way to create content");
  xmlAddChild(node, node1);
  xmlAddChild(root_node, node);
  xmlSaveFormatFileEnc(argc > 1 ? argv[1] : "-", doc, "UTF-8", 1);
  xmlFreeDoc(doc);
  xmlCleanupParser();
  xmlMemoryDump();    
  return(0);
}

 

用下面的命令编译通过。

g++ xmlCreator.cpp -o xmlCreator -I /usr/include/libxml2/  -L /usr/lib -lxml2

 

后来我把这段代码移到Eclipse下编译。引入了头文件路径和lib文件的路径,编译的时候还是不过。后来想起来上两天在编译mysql库的时候有一个设置。就是打开 “Project->Properties” 在弹出的窗体左面选择 "c/c++ Build ->Settings",在窗口选择"GCC C++ linker->Libraries",这时候在右面会出现两个框,一个是“Libraries(-I)”还有一个是"Library search path(-L)",因为通过命令时后面跟了一个-lxml2这个东东。所以要把这个加到"Libraries(-I)"中,这样在编译就可以编译过了。

      呵呵,我的系统是ubutun9.04.


0 0