首页 文章

如何将可执行文件放在文件夹下?

提问于
浏览
0

我原来的目录结构是:

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 回答

  • 2
    bin/mapreduce: mapreduce | bin
    

    这条规则不正确 . 在运行 mapreduce 之前,需要创建 bin . 但是这条规则没有达到那个顺序 . 以下是一些选项:

    • 仅将订单先决条件放在 mapreduce 目标上:
    mapreduce: | bin
    
    • 仅将订单先决条件放在 $(BINS) 目标上:
    $(BINS) : | bin
    

相关问题