Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C Makefile:没有规则使目标';*。o';,'所需*';。停止_C_Makefile_Gnu Make - Fatal编程技术网

C Makefile:没有规则使目标';*。o';,'所需*';。停止

C Makefile:没有规则使目标';*。o';,'所需*';。停止,c,makefile,gnu-make,C,Makefile,Gnu Make,我犯了以下错误 make: *** No rule to make target `stretchy_buffer.o', needed by `tsh'. Stop 正在尝试创建此生成文件 SRCS = stretchy_buffer.c def.c tsh_builtin_commands.c tsh_jobs.c tsh_main.c tsh_routines.c tsh_signals.c OBJS = $(SRCS:.c=.o) tsh: $(OBJS) gcc -Wal

我犯了以下错误

make: *** No rule to make target `stretchy_buffer.o', needed by `tsh'.  Stop
正在尝试创建此生成文件

SRCS = stretchy_buffer.c def.c tsh_builtin_commands.c tsh_jobs.c tsh_main.c tsh_routines.c tsh_signals.c
OBJS = $(SRCS:.c=.o)

tsh: $(OBJS)
    gcc -Wall -g -o tsh $(OBJS)

您需要在makefile中添加以下规则:

CFLAGS = -Wall -g

%.o:%.c
    gcc $(CFLAGS) $< -o $@
CFLAGS=-Wall-g
%.o:%.c
gcc$(CFLAGS)$<-o$@

在现有的makefile中,没有指定从*.c文件获取*.o的规则,因此会报告错误。

提供了有关makefile不包含编译规则时使用隐式(默认)编译规则的详细信息。是否需要
gcc
行?如果我们可以假设
CC=gcc
@jayant,那么您是正确的。如果我们声明CC=gcc,那么就可以使用$(CC),而不是直接使用gcc。因为原始的makefile直接使用了“gcc”,所以我对它进行了维护以避免混淆。@cm161谢谢-这么简单的事情。我没有完全理解当时应用的模式匹配技术。Makefile的文档对于一些源文件非常有用,但是大多数使用模式匹配的示例都过于混乱了!克马克,把这些坏东西赶走!