头文件(.h)包含gcc的问题

时间:2014-08-26 13:26:13

标签: c gcc compiler-errors

我正在尝试使用libxml2来解析C中的一些XML文件。为此,在安装libxml2开发包之后,我将这些行包含在我的code.c文件中:

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

好的,到目前为止一切都很好......但是当我编译代码时,

gcc ../src/code.c -o App

我通过gcc收到了这条消息:

/usr/local/include/libxml2/libxml/parser.h:15:31: fatal error: libxml/xmlversion.h: No such file or directory
#include <libxml/xmlversion.h>
                             ^
compilation terminated.

我的code.c中包含的parser.h文件找不到包含路径“libxml / xmlversion.h”,我收到了错误消息。

我尝试使用-I参数编译传递库路径,但没有成功。

请大家,我该怎么解决这个问题?

2 个答案:

答案 0 :(得分:1)

更改

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

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

并将选项-I/usr/local/include/libxml2添加到用于编译的命令中。

答案 1 :(得分:1)

实际上,如果libxml2是系统问题(开发包),那么pkg-config可能已知它,因此编译和链接(单个源文件程序)的正确方法是:

 gcc -Wall -g $(pkg-config --cflags libxml-2.0) \
     ../src/code.c \
     $(pkg-config --libs libxml-2.0) \
     -o App

当然,您只需要#include <libxml/parser.h>等...... answered by alk

您真的应该使用GNU make并使用Makefile,请参阅this example(以适应C而不是C ++,因此CFLAGS代替CXXFLAGS并且CC代替CXX ...)

习惯于在开发阶段始终使用所有警告-Wall和调试信息-g进行编译。