编译器找不到 libxml/parser.h

Compiler can't find libxml/parser.h

我使用的是 Debian 8 (Jessie),64 位。我安装了 libxml2-dev,它现在位于 /usr/include/libxml2/libxml

但是当我这样做时(就像 libxml 文档说的那样)

#include <libxml/parser.h>

我只在编译时得到(使用gcc

fatal error: libxml/parser.h: no such file or directory

注意:在另一台机器上,使用旧的 64 位 Suse,其中 libxml2-dev 位于完全相同的路径中,并且与新的 Debian 相比没有设置其他环境变量,它工作得很好。使用完全相同的生成文件从一台计算机迁移到另一台计算机时出现问题。 所有 我需要的其他 -dev 库在迁移后才开始工作(使用它们记录的 #include <path>)(它们都是用 apt-get 安装的),只有libxml2-dev 未在编译中找到。

我是否需要执行其他操作才能使 libxml2-dev 可见?

尝试在 parser.h 文件所在的位置使用显式包含进行编译,即像这样

g++ -I/usr/include/libxml2/


以下环境变量也可用于查找头文件

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH

查找更多信息here

如果您安装了它:sudo apt-get install libxml2-dev libxml2-doc 进入 /usr/include/libxml2 并从该文件夹中复制或移动以下级别的所有内容:cp -R libxml/ ../ 之后对我来说就可以了。

您应该使用 pkg-config 将参数传递给编译器。像这样

g++ `pkg-config --cflags libxml-2.0` example.c -o example.o

和链接器:

g++ `pkg-config --libs libxml-2.0` example.o -o example

我在 Centos 系统上遇到了同样的问题。我通过执行以下操作解决了它:

yum install libxml2-devel
cd /usr/include
ln -s libxml2/libxml .

就是这样。没有更改环境变量或编译器开关。