【问题标题】:Compiler can't find libxml/parser.h编译器找不到 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 &lt;path&gt;),只有 libxml2-dev 在编译时找不到。

我是否需要做其他事情才能使libxml2-dev 可见?

【问题讨论】:

    标签: linux include debian libxml2 suse


    【解决方案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 .
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-24
          • 2015-06-27
          • 2019-01-24
          • 2012-01-14
          • 2014-03-25
          • 1970-01-01
          相关资源
          最近更新 更多