c - 如何修改特定包含的包含路径

标签 c gcc libxml2 libiconv

我有一个同时使用 iconv 功能和 libxml2 的应用程序。

libxml2 安装在 /usr/local 中,所以我使用编译器标志 -I/usr/local/include/usr/local 中还有一个独立的 libiconv 安装,我不想使用它(我想使用 glibc 中的那个)。

在我的应用程序代码中,我可以通过以下方式解决 iconv 问题:

#include </usr/include/iconv.h>

但是,问题是 libxml2 的东西也在使用 iconv 用于它自己的内部目的。而 libxml2 header 只是做:

#include <iconv.h>

有什么解决办法吗?例如,我可以在包含 libxml header 的代码中执行任何操作,以告诉它在哪里搜索 iconv 吗?

最佳答案

首先,包含正确的 <iconv.h>在任何 libxml2 header 之前,即使在不使用 iconv 的源中也是如此。这将防止 libxml header 包含任何其他版本(假设 header 防护相同...)。

对于长期修复,您需要修复您的系统(因为它实际上已经损坏)。您不能在 /usr/local 中安装软件包然后期望能够单独启用或禁用它们。相反,安装带有单独前缀的包。例如,在 /opt/libxml2 中安装 libxml2 , 并在 /opt/iconv 中安装 iconv .

关于c - 如何修改特定包含的包含路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9101837/

相关文章:

c - OpenGL 凹凸贴图不起作用

c - 这是什么类型的声明?

c++ - 编译器使用的 double 表示的显式规范

html - 如何在c中使用xpath获取HTML表格?

结合XML配置函数的读写。

c - 应为 'void (**)(void *, const char *)' 但参数类型为 'void (*)(void *, const char *)

c - 将 execle 与 wget 命令一起使用

c++ - 使用 Arduino 信号作为 PC 的输入?

c - gcc编译错误: cast specifies array type

c - GCC 中的链接错误 : selective static linking of libm. a