【发布时间】:2016-09-09 05:03:24
【问题描述】:
我原来的目录结构是:
include/ ( const.h , map_reduce.h )
src/ ( main.c , map_reduce.c )
生成文件
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 文件夹中?
【问题讨论】:
-
你可以 cd 进入 mapreduce 目标中的 bin/,从而在 bin/ 目录中编译你的源代码
标签: makefile