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

时间:2011-11-15 22:07:37

标签: c++ linux qt redhat

我遇到了一个我无法避免的问题。 Redhat 6(或大多数linux软件包)附带一个默认的QT软件包,在/ usr / lib和/ usr / include文件夹中安装了header / etc。

现在,我想在不删除旧版本的情况下链接到较新版本的QT。不幸的是,由于标题位于/ include /文件夹中,gcc会自动找到它们,然后使用错误的包含文件(而不是我在其他地方使用的文件)。

我似乎无法阻止编译器自动执行此操作。我之前通过简单地手动删除旧库/标题来解决它,但这是一个长期可怕的解决方案。

我认为这个问题也不是QT特有的,它恰好是我当前的实例。

有什么建议吗?

非常感谢:)

2 个答案:

答案 0 :(得分:4)

如果通过-I选项提供较新Qt安装的include目录,则应在标准包含目录(即/ usr / include等)之前搜索它。从搜索路径中删除标准包含目录完全可能不是一个好主意,因为那里也会找到标准标题(请注意,Qt标题本身很可能包含标准标题,如果找不到标题标题,则不起作用。)

但是,如果您真的不希望搜索标准包含目录,则选项-nostdinc应该可以执行您想要的操作。

答案 1 :(得分:1)

我的问题与使用的qmake版本有关。它找到了qmake的先前版本,即使它来自qt4,它也链接到错误的包含。

更新qmake路径有助于解决此问题。