header.h: 没有这样的文件或目录,即使 source 和 header 在同一目录中

header.h: No such file or directory even though source and header are in same directory

我制作了一个 header 和一个来源,但我不知道如何 link 它们。我在网上查了一下,但提供的命令不起作用(否则我不会在这里 :))。

编译它(如果你使用 GCC):

Header:

$ gcc -c whatever.h -o whatever.o

来源:

$ gcc -c sample.c -o sample.o

给link文件创建一个可执行文件:

$ gcc sample.o whatever.o -o sample

我做错了什么。我正在使用 geany 进行编写(编译错误在这里)但是命令是在同一目录中的终端上执行的。任何人都可以给我 geany 的构建命令所以每当我想包含一个 header 我可以编译和 运行?

好的和正确的方法是

sample.c

#include "header.h"

并编译

gcc sample.c -o ob

经验法则:

  • 头文件 [.h] 用于 #includeing
  • 源文件 [.c] 用于编译和 link 一起创建可执行文件。

.c 文件中 #included 头文件后,就不需要编译头文件和生成目标文件了。

仅供参考,您可以通过 运行ning

检查 #include-ing 头文件的效果
gcc -E sample.c

并希望您能理解为什么 不需要 单独编译和 link 头文件。


编辑:

如果您有 sample.cwhatever.h,要生成 运行 二进制文件,只需执行

  • #include "whatever.h"sample.c

  • 的顶部
  • gcc -o sample sample.c

  • ./sample

如果您通过以下方式包含头文件:

#include <header.h>

会报这个错

相反你可以这样写:

#include "header.h"