我有一个同时使用 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/