安装环境略;

测试源码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<libxml/xmlmemory.h>
#include<libxml/parser.h>

void
parseStory(xmlDocPtr doc,xmlNodePtr cur)
{
        xmlChar *key;
        cur = cur->xmlChildrenNode;
        while(cur != NULL)
        {
                if((!xmlStrcmp(cur->name,(const xmlChar*)"keyword")))
                {
                        key = xmlNodeListGetString(doc,cur->xmlChildrenNode,1);
                        printf("keyword:%s\n",key);
                        xmlFree(key);
                }
                cur = cur->next;
        }
        return;
}

static void
parseDoc(char *docname)
{
        xmlDocPtr doc;
        xmlNodePtr cur;
        doc = xmlParseFile(docname);
        if(doc == NULL)
        {
                fprintf(stderr,"Document not parse successfull.\n");
                return;
        }
        cur = xmlDocGetRootElement(doc);
        if(cur == NULL)
        {
                fprintf(stderr,"empty document\n");
                xmlFreeDoc(doc);
                return;
        }
        if(xmlStrcmp(cur->name,(const xmlChar*)"story"))
        {
                fprintf(stderr,"document of the wrong type root node != story");
                xmlFreeDoc(doc);
                return;
        }
        cur=cur->xmlChildrenNode;
        while(cur != NULL)
        {
                if((!xmlStrcmp(cur->name,(const xmlChar*)"storyinfo")))
                {
                        parseStory(doc,cur);
                }
                cur=cur->next;
        }
        xmlFreeDoc(doc);
        return;
}

int
main(int argc,char **argv)
{
        char *docname;
        if(argc<=1)
        {
                printf("Usage:%s docname\n",argv[0]);
                return(0);
        }
        docname=argv[1];
        parseDoc(docname);
        return(1);
}

出现的错误:gcc test.c - o test

xml.c:4:29: error: libxml/xmlmemory.h: No such file or directory
xml.c:5:26: error: libxml/parser.h: No such file or directory
xml.c:8: error: expected ‘)’ before ‘doc’
xml.c:14:44: warning: missing terminating " character
xml.c:14: error: missing terminating " character
xml.c: In function ‘parseDoc’:
xml.c:28: error: ‘xmlDocPtr’ undeclared (first use in this function)
xml.c:28: error: (Each undeclared identifier is reported only once
xml.c:28: error: for each function it appears in.)
xml.c:28: error: expected ‘;’ before ‘doc’
xml.c:29: error: ‘xmlNodePtr’ undeclared (first use in this function)
xml.c:29: error: expected ‘;’ before ‘cur’
xml.c:30: error: ‘doc’ undeclared (first use in this function)
xml.c:36: error: ‘cur’ undeclared (first use in this function)
xml.c:43: error: expected ‘)’ before ‘xmlChar’
xml.c:52: error: ‘sur’ undeclared (first use in this function)
xml.c:52: error: expected ‘)’ before ‘xmlChar’

解决办法:

用命令:gcc xml.c -o xml -I/usr/include/libxml2/ -lxml2可解决

解释:

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

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

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

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

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

ps:

这个命令也可以成功编译:gcc `xml2-config --cflags --libs` -o xml-create xml-create.c

转载于:https://www.cnblogs.com/jiangyea/p/3500649.html

libxml2编译错误问题相关推荐

  1. 编译linux内核的错误,linux内核编译错误

    原标题:linux内核编译错误 内核版本:2.6.14 交叉编译器: -linux-gcc 4.3.3 错误: arch/arm/mm/alignment.c: In function 'proc_a ...

  2. vc 6.0常见编译错误及改正方法

    最常见VC++6.0编译错误信息集合 1.fatal error C1010: unexpected end of file while looking for precompiled header ...

  3. oracle创建过程带有编译错误,警告:创建的函数带有编译错误

    警告:创建的函数带有编译错误 下面是一个<Oracle Database Java Developer's Guide>上的例子: ---------------------------- ...

  4. 18.16 gcc-3.4.5编译错误及解决方法集锦

    18.16 gcc-3.4.5编译错误及解决方法集锦 参考文章: (1)18.16 gcc-3.4.5编译错误及解决方法集锦 (2)https://www.cnblogs.com/baixu/p/10 ...

  5. Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案

    Eclipse Maven 编译错误 Dynamic Web Module 3.0 requires Java 1.6 or newer 解决方案 参考文章: (1)Eclipse Maven 编译错 ...

  6. vs代码显示波浪线,但没编译错误

    参考:https://blog.csdn.net/everrisky/article/details/55833396 vs2015打开cocos2dx-3.14自带项目,代码显示波浪线,但没编译错误 ...

  7. Linux系统下GCC编译错误:“undefined reference to ‘sqrt‘”

    Linux系统下GCC编译错误:"undefined reference to 'sqrt'",解决方法:-lm 数学函数sqrt()位于libm.so库文件中(这些库文件通常位于 ...

  8. Introduction to 3D Game Programming with DirectX 12一书学习记录(第一个例子编译错误)

    准备开始学一学d3d,听说<Introduction to 3D Game Programming with DirectX 12>这本书不错,于是就拿来学一学.不料第一个例子,按照书中的 ...

  9. Vs2010编译错误集

    1.error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 在项目属性-&g ...

最新文章

  1. CSDN受邀成为首批中国人工智能产业发展联盟特约媒体
  2. 8255控制四个双色灯C语言,汇编语言实现通过8255A和4个开关控制实现8个LED灯和8个7位数码管显示指定数字全亮、全灭、从左至右、从右至左跑马灯式点亮...
  3. 零中频接收机频率转换图_接收机抗噪声技术
  4. pcl和opencv多版本共存
  5. mysql mysqld.sock_MySQL笔记-最简单的方法来解决找不到mysqld.sock文件的问题
  6. PAT乙级(1021 个位数统计)
  7. storm的数据源编程单元Spout学习整理
  8. Python批量检查docx文档中文本框的内容是否正确
  9. 以太坊2.0客户端Lighthouse发布v1.3.0版本,为高优先级建议立即更新
  10. websocket传输数据大小限制_websocket 发送字符串数据上限是多少
  11. Spring源码之ApplicationContext(一)
  12. Linux7.2虚拟机连接电脑相关配置
  13. java csrf 跨域_使用javascript跨域请求与CSRF
  14. Java在线反编译网站
  15. 肩周炎的治疗方法哪个最有效
  16. 无心剑英译许巍《温暖》
  17. 论文-Interactive Path Reasoning on Graph for Conversational Recommendation
  18. vue滑杆_Vue无限滑杆组件
  19. mysql和oracle面试题_【SQL 面试题2】Mysql 和Oracle数据库
  20. 上海证券交易所国债买断式回购交易实施细则

热门文章

  1. t4b代码生成_用T4模板实现简单的代码生成器
  2. Qt文档阅读笔记-QFuture官方解析及实例
  3. MySQL笔记-简单配置主从库
  4. 专业课程设计之客户与服务器程序的同步与通信机制的设计(一)项目介绍
  5. SQL基础E-R图画法(三)
  6. linux下网络编程设置非阻塞,UNIX网络编程 非阻塞connect的实现
  7. python 定时任务 Apscheduler
  8. UnicodeEncodeError: ‘gbk‘ codec can‘t encode character ‘\xe7‘ in position 295: illegal multibyte seq
  9. php公众号客服系统,公众号在线客服系统哪个好,主流客服系统评测及推荐
  10. php 智能输入提示插件,PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能_php实例...