【问题标题】:How to Exclude /usr/include Path from Linux Application?如何从 Linux 应用程序中排除 /usr/include 路径?
【发布时间】:2011-12-29 22:32:16
【问题描述】:

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

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

我似乎无法阻止编译器自动执行此操作。我以前通过简单地手动删除旧的库/头文件来解决它,但从长远来看,这是一个糟糕的解决方案。

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

有什么建议吗?

非常感谢:)

【问题讨论】:

  • 您只需将包含标志更改为 gcc - 请参阅 stackoverflow.com/questions/558803/…
  • 我已经这样做了,但是当我编译项目时,我仍然得到 /usr/include/QtCore 等路径,而不是 CPLUS_LIBRARY_PATH 路径。我真的不知道该怎么办..

标签: c++ linux qt redhat


【解决方案1】:

如果通过-I选项给出较新Qt安装的包含目录,则应在标准包含目录(即/usr/include等)之前搜索它。从搜索路径中完全删除标准包含目录是可能不是一个好主意,因为在那里也可以找到标准头文件(请注意,Qt 头文件本身很可能包含标准头文件,如果找不到这些头文件将无法工作)。

但是,如果您真的不希望搜索标准包含目录,则选项 -nostdinc 应该可以满足您的需求。

【讨论】:

    【解决方案2】:

    我的问题原来与使用的 qmake 版本不正确有关。它正在查找以前版本的 qmake,即使它来自 qt4,它也链接到错误的包含。

    更新 qmake 路径可以解决此问题。

    【讨论】:

    • 如果这可以解决您的问题,请继续将您的答案标记为已接受的答案,让未来的观众知道什么有效。
    • 是的,我正在等待这样做 - 我需要在发布后等待一个小时左右才能这样做:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2019-07-07
    • 2021-06-15
    • 2015-01-17
    相关资源
    最近更新 更多