c++ - 如何从 Linux 应用程序中排除/usr/include 路径?

标签 c++ linux qt redhat

我遇到了一个无法避免的问题。 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/

相关文章:

c++ - 为什么不调用析构函数?

c++ - bool 表达式作为模板参数

python - 在linux和mac中从python查询窗口id

python - 使用 enaml 时如何获取按键事件?

c++ - 如何杀死正在计算外部库函数的线程

c++ - 将阴影添加到 ListView(图标模式)?

c++ - Mac OS X 上的 g++ - CoreServices.h 错误

linux - Centos需要很长时间才能解析本地网络附近的服务器

c - 使用 openat 重新打开一个目录

c++ - Qt 4.7 - 工具提示和 QComboBox 弹出窗口在 OS X 10.12 下出现空白