libxml2编译安装(libxml2 library)

libxml2编译安装(libxml2 library)1 下载和安装 LIBXML2 nbsp nbsp Libxml2 是个 C 语言的 XML 程式库 能简单方便的提供对 XML 文件的各种操作 并且支持 XPATH 查询 及部分的支持 XSLT 转换等功能 Libxml2 的下载地址是 http xmlsoft org 完全版的库是开源的 并且带有例子程式和说明文件 **将这个库先下载下来 因为这样能查看其中的文件和例子

大家好,我是讯享网,很高兴认识大家。



1. 下载和安装LIBXML2
    Libxml2是个C语言的XML程式库,能简单方便的提供对XML文件的各种操作,并且支持XPATH查询,及部分的支持XSLT转换等功能。Libxml2的下载地址是
http://xmlsoft.org/
,完全版的库是开源的,并且带有例子程式和说明文件。**将这个库先下载下来,因为这样能查看其中的文件和例子。
由于我是在linux下用C语言进行研发的,所以我下载的是libxml2-2.6.20.tar.gz版本的源码包。
具体安装步骤:
&nbsp; &nbsp;解压:\(tar zxvf libxml2-2.6.20.tar.gz<br /> &nbsp; &nbsp;进入解压后的安装目录:\)cd libxml2-2.6.20
&nbsp; &nbsp;安装三部曲:1 )\(https://blog.51cto.com/zhaojunjie/configure<br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;2 ) &nbsp;\)make
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;3 ) &nbsp;$make install
安装完毕。


2.libxml资料查询

&nbsp; &nbsp; &nbsp;关于libxml库的相关头文件和API在这里我就不介绍了,内容太多,可以参考相关资料,进入libxml官方网站: http://xmlsoft.org/

3.一个简单程序的编译


#include&lt;stdio.h&gt;
#include&lt;string.h&gt;
#include&lt;stdlib.h&gt;
#include&lt;libxml/xmlmemory.h&gt;
#include&lt;libxml/parser.h&gt;

int main()
{
&nbsp;xmlDocPtr doc=xmlNewDoc(BAD_CAST&quot;1.0&quot;);
&nbsp;xmlNodePtr root_node=xmlNewNode(NULL,BAD_CAST&quot;root&quot;);
&nbsp;xmlDocSetRootElement(doc,root_node);
&nbsp;xmlNewTextChild(root_node,NULL,BAD_CAST &quot;newNode1&quot;,BAD_CAST &quot;newNode1 content&quot;);
&nbsp;xmlNewTextChild(root_node,NULL,BAD_CAST &quot;newNode2&quot;,BAD_CAST &quot;newNode2 content&quot;);
&nbsp;xmlNewTextChild(root_node,NULL,BAD_CAST &quot;newNode3&quot;,BAD_CAST &quot;newNode3 content&quot;);
&nbsp;xmlNodePtr node=xmlNewNode(NULL,BAD_CAST &quot;node2&quot;);
&nbsp;xmlNodePtr content=xmlNewText(BAD_CAST &quot;NODE CONTENT&quot;);
&nbsp;xmlAddChild(root_node,node);
&nbsp;xmlAddChild(node,content);
&nbsp;xmlNewProp(node,BAD_CAST &quot;attribute&quot;,BAD_CAST &quot;yes&quot;);
&nbsp;node=xmlNewNode(NULL,BAD_CAST &quot;son&quot;);
&nbsp;xmlAddChild(root_node,node);
&nbsp;xmlNodePtr grandson=xmlNewNode(NULL,BAD_CAST &quot;grandson&quot;);
&nbsp;xmlAddChild(node,grandson);
&nbsp;xmlAddChild(grandson,xmlNewText(BAD_CAST &quot;This is a grandson node&quot;));
&nbsp;int nRel=xmlSaveFile(&quot;CreatedXml.xml&quot;,doc);
&nbsp;if(nRel!=-1)
&nbsp;{
&nbsp; &nbsp;xmlFreeDoc(doc);
&nbsp; &nbsp;return 1;
&nbsp;}
}

在用libxml2尝试做解析xml文件,编译的时候出现了找不到头文件的错误:

问题出自啊c文件里的include:

默认会到/usr/include 目录下搜索,但是不存在libxml目录,而libxml是在/usr/include/libxml2/libxml 下。

所以我先做了一个软连接:


讯享网

再尝试着编译,路径的问题是解决了,但是链接库的问题还在,内建的函数找不到:

在网上搜索了下答案,可以在gcc命令后加上 -I-l 参数解决:

用这个命令,所有的错误都解决了,成功编译出来需要的执行文件。

这个 -I-l 的参数解释是这样的:

-Idir当用#include &lt;file&gt; 链接文件的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他会先在你所制定的目录查找,然后再按常规的顺序去找。

-llibrary制定编译的时候使用的库。

例子用法: gcc -lcurses hello.c &nbsp; /* 使用ncurses库编译程序 */

所以“gcc -o xml-build xml-build.c -I/usr/include/libxml2/ -lxml2”命令的意思就是“在指定目录/usr/include/libxml2里寻找头文件,编译时使用的库是xml2函数库”

小讯
上一篇 2025-05-28 07:29
下一篇 2025-06-15 07:41

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/184972.html