ubuntu下编译和使用libxml2
2014-03-19 14:19
639 查看
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.
最近一直在找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.
相关文章推荐
- ubuntu下编译和使用libxml2
- ubuntu下编译和使用libxml2
- ubuntu下编译和使用libxml2
- ubuntu下编译和使用libxml2
- ubuntu 下面libxml2的安装与使用--注意 -lxml2 不放置在最后编译会报错!
- ubuntu下编译和使用libxml2
- ubuntu下编译和使用libxml2
- ubuntu 10.04 编译安装 vim 7.3, 解决 vim 不能使用系统剪贴板问题
- 使用Eclipse编译运行MapReduce程序 Hadoop2.6.0_Ubuntu/CentOS
- 使用Ubuntu16下载编译Android6.0源码
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu 使用Eclipse搭建C/C++编译环境
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- 使用vmware+ubuntu14.04编译android4.4.2源码
- Ubuntu使用eclipse搭建c/c++编译环境----CDT插件
- 在32位的Ubuntu 11.04中为Android NDK r6编译FFmpeg0.8.1版-Android中使用FFmpeg媒体库(一)
- Ubuntu下v8 javascript虚拟机的编译与使用
- ubuntu编译、配置、使用tgt
- Ubuntu(Linux)使用Eclipse搭建C/C++编译环境
- Ubuntu16.04.2 LTS下使用编译安装程序(使用configure、make、 make install)