【问题标题】:how to put an executable file under a folder?如何将可执行文件放在文件夹下?
【发布时间】: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


【解决方案1】:
bin/mapreduce: mapreduce | bin

那条规则是不正确的。您需要在运行 mapreduce 之前创建 bin。但是该规则无法实现该排序。以下是一些选项:

  • 将仅订单前提条件放在mapreduce 目标上:

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

    $(BINS) : | bin
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 2019-06-04
    • 2017-04-19
    • 2022-01-21
    • 2020-04-29
    相关资源
    最近更新 更多