编译器找不到 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 .
就是这样。没有更改环境变量或编译器开关。
我使用的是 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 .
就是这样。没有更改环境变量或编译器开关。