我原来的目录结构是:
include /(const.h,map_reduce.h)src /(main.c,map_reduce.c)Makefile
CFLAGS = -Wall -Werror
BINS = bin_mapreduce
all: $(BINS)
bin_mapreduce: bin/mapreduce
bin/mapreduce: mapreduce | bin
mapreduce:
gcc $(CFLAGS) src/main.c -o bin/$@
bin:
mkdir $@
clean:
rm -f bin/mapreduce
clean:
rm -f bin/mapreduce
如果没有人,我想创建一个bin文件夹 .
然后,将main.c编译为可执行的mapreduce文件并将其放入bin文件夹 .
但是,对于bin / $ @,如果我在$ @之前添加bin /,则会显示错误:
/ usr / bin / ld:无法打开输出文件bin / mapreduce:没有这样的文件或目录collect2:错误:ld返回1退出状态Makefile:19:目标'mapreduce'的配方失败make:*** [mapreduce]错误1
如果没有bin /,只需:
gcc $(CFLAGS) src/main.c -o $@
如果在bin文件夹外创建mapreduce文件,则会创建bin文件夹 .
如何将mapreduce文件放在bin文件夹中?
1 回答
这条规则不正确 . 在运行
mapreduce
之前,需要创建bin
. 但是这条规则没有达到那个顺序 . 以下是一些选项:mapreduce
目标上:$(BINS)
目标上: