【问题标题】:Manipulating the search path for include files操作包含文件的搜索路径
【发布时间】:2010-11-17 11:11:29
【问题描述】:

我的开发环境是这样的,我在/usr/include/another/directory 中有some_header.h/another/directory 包含一些我需要包含在我的程序中的头文件,但我想使用来自/usr/includesome_header.h。当我使用

 gcc ... -I/another/directory

gcc 使用/another/directory/some_header.h。如果我使用

 gcc ... -I/usr/include -I/another/directory

gcc 做同样的事情是因为它忽略了/usr/include,因为它是标准搜索路径的一部分,但它会在-I. 包含的非标准目录之后进行搜索

有什么想法吗?

【问题讨论】:

  • 杀死了我的答案,我把它倒退了。

标签: c gcc include


【解决方案1】:

使用 -iquote 开关:

使用引号包含 另一个/目录 中的文件:

#include "another_file.h"

然后使用

gcc -iquote /another/include ...

为引用的包含文件添加搜索路径。此开关将在当前目录之后和 -I 和系统包含路径之前添加一个用于搜索引用的包含文件的目录。

使用括号包含您的其他包含文件(即#include <header.h>)。

请参阅此处了解更多信息: Where are include files stored - Ubuntu Linux, GCC

【讨论】:

  • 这似乎非常接近工作,但事实证明 /another/directory 中的文件使用 #include 所以当我使用 -iquote 时他们找不到它们的包含文件。
  • 嗯,这很奇怪。预处理器仍应在 -I 和系统包含路径中搜索 。似乎对我有用。
【解决方案2】:

你看过-nostdinc吗?

手册说:

-nostdinc
不要在标准系统目录中搜索头文件。 只有您使用 -I 选项指定的目录(以及 搜索当前文件的目录(如果适用)。

当然,这意味着 必须指定通常在标准搜索路径上出现的任何内容,而您确实想要...

【讨论】:

    【解决方案3】:

    您是否尝试过取消设置系统 INCLUDE 路径环境变量?

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    相关资源
    最近更新 更多