【问题标题】:Setting header files path in compilation?在编译中设置头文件路径?
【发布时间】:2015-12-21 13:36:11
【问题描述】:

我正在尝试学习不同的编译技巧。请考虑以下代码 sn-p :

#include <header.h>
   main()
  {
     execute me;

  }

现在我正在使用以下代码编译此代码:-

gcc hello.c -I /home/example

我在编译此文件头期间看到的内容正在 /usr/include/ 等路径中搜索,但我已放置 header.h /home/example/header.h 路径 所以这找不到头文件。

但是如果现在我以以下方式包含头文件,那么它能够找到头文件。

#include "header.h"

所以我想知道是否有任何方法可以使用 选项包含头文件,并且我还可以使用命令行(使用 -I 或任何选项)提供头文件路径?

如果有不清楚的地方请评论。

【问题讨论】:

  • 如果您使用-I 给出了路径,无论您如何包含它,gcc 都会搜索它。你是怎么决定的?:“但我已经放置了 header.h /home/example/header.h 路径,所以无法找到头文件”。您是否收到提示无法找到的错误消息?
  • 如果您将-I 放在源文件之前,行为是否会有所不同? (gcc -I /home/example hello.c)?在 Mac OS X 10.11.2 上使用 GCC 5.3.0 对我来说似乎并不重要。但是指定-I 指令的顺序并不重要。添加-H 选项告诉您什么?
  • @terencehill 你是对的 :)

标签: c gcc compilation header


【解决方案1】:

包含带有这些符号的头文件实际上告诉编译器在通用目录中搜索它并且包含这些“”符号告诉编译器在本地项目目录中搜索。

【讨论】:

    【解决方案2】:

    你确定它没有找到标题吗?因为这可证明确实有效。您是否可能拼错了-I 后面的目录?

    $ echo '#error here!' > header.h
    $ cat test.c
    #include <header.h>
    int main(void)
    {
         return 0;
    }
    $ gcc -I $PWD test.c
    In file included from test.c:1:0:
    /home/user/header.h:1:2: error: #error here!
     #error here!
      ^
    

    #include "header" 的结果相同。

    【讨论】:

      猜你喜欢
      • 2023-01-11
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 2020-04-15
      • 1970-01-01
      • 2020-12-14
      • 1970-01-01
      • 2016-02-17
      相关资源
      最近更新 更多