我正在尝试为一些.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.c
,prog3.h
,lib.h
)位于同一目录中。
我发现了很多关于这个特定错误的问题,但它们都不是关于PWD中的文件。我做错了什么?
答案 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文件(如果您需要检查这些文件)。