我遇到了一个无法避免的问题。 Redhat 6(或大多数 linux 软件包)在/usr/lib 和/usr/include 文件夹中带有默认的 QT 软件包,其中安装了 header /等。
现在,我想在不删除旧版本的情况下链接到新版本的 QT。不幸的是,由于 header 位于/include/文件夹中,gcc 会自动找到它们,然后使用错误的包含文件(而不是我在其他地方拥有的文件)。
我似乎无法阻止编译器自动执行此操作。我以前通过简单地手动删除旧库/ header 来解决它,但从长远来看,这是一个糟糕的解决方案。
我也不认为这个问题是 QT 特有的,它恰好是我当前的实例。
有什么建议吗?
非常感谢:)
最佳答案
如果您通过 -I
选项提供较新 Qt 安装的包含目录,则应在标准包含目录(即/usr/include 等)之前搜索它。删除标准包含目录完全从搜索路径中搜索可能不是一个好主意,因为标准 header 也可以在那里找到(请注意,Qt header 本身很可能包含标准 header ,如果找不到它们将无法工作)。
但是,如果您真的不想搜索标准包含目录,选项 -nostdinc
应该可以满足您的需求。
关于c++ - 如何从 Linux 应用程序中排除/usr/include 路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8143829/