makefile致命错误:没有这样的文件或目录,但该文件位于当前目录

时间:2017-03-25 00:18:06

标签: c makefile directory header-files fatal-error

我正在尝试为一些.c和.h文件创建一个非常简单的makefile,所有这些文件都在当前目录中。我承认我不完全理解makefile;这是我到目前为止所拥有的:

prog3 : prog3.c prog3.h lib.o
    gcc -c prog3.c

lib.o : lib.c lib.h
    gcc -c lib.c

当我使用命令make时,我收到此消息:

prog3.c:5:17: fatal error: lib.c: No such file or directory  
compilation terminated.  
makefile:2: recipe for target 'prog3' failed  
make: *** [prog3] Error 1

但是,文件lib.c与所有其他文件(prog3.cprog3.hlib.h)位于同一目录中。

我发现了很多关于这个特定错误的问题,但它们都不是关于PWD中的文件。我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的makefile看起来很好。 makefile的基本结构包含以下模式:

/static/...

你的makefile正在尝试编译prog3.c,这应该是它应该做的。你在prog3.c中有一个编译错误,看起来你正在尝试#include" lib.c",但我的猜测是你在第15行做了这个:

<build object> : <list of dependencies>
       command to execute to build the object if dependencies have changed
           ...
       command to execute to build the object if dependencies have changed

如果这是你正在做的事情,这是错误的。 C实现文件永远不应包含其他.c文件(很少有例外)。您应该只包含.h头文件。链接器将基于对lib.h的编译从lib.c引入所需的函数。

另请注意包含括号&lt;&gt;的文件仅适用于系统标头。应使用引号包含用户定义的头文件:

#include <lib.c>

如果这不能解决您的编译错误,请编辑您的问题以提供prog3.c和lib.c文件(如果您需要检查这些文件)。