2016-09-09 69 views
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/[email protected] 

bin: 
    mkdir [email protected] 


clean: 
    rm -f bin/mapreduce 


clean: 
    rm -f bin/mapreduce 

我想創建一個bin文件夾,如果沒有一個。

然後,將main.c編譯成可執行的mapreduce文件並放入bin文件夾中。

然而,對於斌/ $ @,如果我加斌/ $ @之前,它顯示了一個錯誤:

/usr/bin/ld: cannot open output file bin/mapreduce: No such file or directory

collect2: error: ld returned 1 exit status

Makefile:19: recipe for target 'mapreduce' failed

make: *** [mapreduce] Error 1

如果做沒有斌/,只是:

gcc $(CFLAGS) src/main.c -o [email protected] 

如果在bin文件夾外創建一個mapreduce文件,創建bin文件夾。

如何將mapreduce文件放入bin文件夾?

+0

你可以將cd放入mapreduce目標中的bin /中,從而編譯bin /目錄中的源代碼 – Evert

回答

2
bin/mapreduce: mapreduce | bin 

該規則不正確。在運行mapreduce之前,您需要創建bin。但是這個規則並沒有達到那個順序。這裏有一些選擇:

  • 把訂單僅在mapreduce目標的前提條件:

    mapreduce: | bin 
    
  • 把訂單僅在$(BINS)目標的前提條件:

    $(BINS) : | bin 
    
相關問題