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

标签 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 参数传递库路径进行编译,但没有成功。

请问各位大侠,我该如何解决?

最佳答案

实际上,如果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 而不是 CXXFLAGSCC 而不是 CXX ...)

养成总是在编译时出现所有警告的习惯 -Wall和调试信息 -g至少在开发阶段。

关于c - 头文件 (.h) 包含 gcc 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25507017/

相关文章:

c++ - 未记录的 GCC C++11 扩展?在 lambda 捕获列表中捕获任意表达式

c++ - 当 `delete` 使用非虚析构函数处理基类时,Clang 和 GCC 会做什么?

php - PHP-帮助警告: Missing argument

c - Linux 上的 0x4000000 sigaction 标志是什么?

c - _sbrk 函数在放置在静态库中时找不到

常量表达式中不能使用 const 变量?

F# 编译器抛出 OutOfMemoryException

C 指针 - 从绝对地址读取值与 AddressOf 运算符 (&)

c - 用 C 语言向另一个程序发送文本命令

c - Signed Short (Signed Int16) 乘法解释