编译器找不到 libxml/parser.h
Posted
技术标签:
【中文标题】编译器找不到 libxml/parser.h【英文标题】:Compiler can't find libxml/parser.h 【发布时间】:2015-07-03 01:50:59 【问题描述】:我使用的是 Debian 8 (Jessie),64 位。我安装了libxml2-dev
,现在位于/usr/include/libxml2/libxml
。
但是当我这样做时(就像libxml
docs 所说)
#include <libxml/parser.h>
我只在编译时得到(使用gcc
)
fatal error: libxml/parser.h: no such file or directory
注意:在另一台机器上,使用旧的 64 位 Suse,其中libxml2-dev
位于完全相同的路径中,与新的 Debian 相比,没有设置其他环境变量,它工作得非常好。使用完全相同的 makefile 从一台计算机迁移到另一台计算机时出现问题。 所有 我需要的其他 -dev
库在迁移后(它们都安装了 apt-get
)后才工作(它们记录在案的 #include <path>
),只有 libxml2-dev
在编译时找不到。
我是否需要做其他事情才能使libxml2-dev
可见?
【问题讨论】:
【参考方案1】:尝试在parser.h
文件所在的位置显式包含编译,即像这样的smth
g++ -I/usr/include/libxml2/
以下环境变量也可用于查找头文件
CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
查找更多信息here
【讨论】:
嗯,这很明显。但是,当使用完全相同的 makefile 位于完全相同的位置时,可能是在一个系统上找到 lib 而在另一个系统上找不到 lib 的原因? 显然INCLUDE_PATH
环境变量没有更新为还包括/usr/include/libxml2/
只需通过echo $INCLUDE_PATH
查看即可
这个变量在两台机器上根本不存在。
还有C_INCLUDE_PATH
?【参考方案2】:
如果您安装了它:sudo apt-get install libxml2-dev libxml2-doc
进入 /usr/include/libxml2
并复制或移动该文件夹中的所有内容到以下级别:cp -R libxml/ ../
之后它对我有用。
【讨论】:
【参考方案3】:您应该使用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
【讨论】:
【参考方案4】:我在 Centos 系统上遇到了同样的问题。我通过执行以下操作解决了它:
yum install libxml2-devel
cd /usr/include
ln -s libxml2/libxml .
就是这样。无需更改环境变量或编译器开关。
【讨论】:
以上是关于编译器找不到 libxml/parser.h的主要内容,如果未能解决你的问题,请参考以下文章
AndroidStudio 很多类红色高亮找不到,可以编译运行