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的文档对于一些源文件非常有用,但是大多数使用模式匹配的示例都过于混乱了!克马克,把这些坏东西赶走!