生成运行可执行文件的make文件

时间:2014-06-10 07:10:10

标签: makefile

我在参考SO Run Executable from makefile上的某个链接后尝试运行可执行文件。一切正常,只需要输入“make run”来执行所有命令。我想知道如何在不必输入run的情况下运行它,只需make就可以运行所有内容。截至目前make命令只执行规则all并运行另一部分我必须使用make run。我是Make的新手。你能帮我改进一下代码吗?任何帮助表示赞赏。

all:    rdata.c
    -sudo rm a.out
    -gcc rdata.c -o a.out

exec:   run

run:    all
    -sudo ./a.out
    sudo javac -classpath /home/hduser/12115_Select_Query/hadoop-core-1.1.2.jar -d mysort MySort.java 
    sudo jar -cvf mysort.jar -C mysort/ .
    -hadoop fs -rmr MySort/output
    -hadoop fs -rmr MySort/input
    hadoop fs -mkdir MySort/input
    hadoop fs -put Data/data.txt MySort/input       
    hadoop jar mysort.jar org.myorg.MySort MySort/input MySort/output
    -sudo rm /home/hduser/Out/sort.txt
    hadoop fs -copyToLocal MySort/output/part-r-00000 /home/hduser/Out/sort.txt
    sudo gedit /home/hduser/Out/sort.txt

.PHONY: exec run

1 个答案:

答案 0 :(得分:1)

只需将run规则放在all之前。

您还可以重写all规则并重命名,以减少冗余并正确处理依赖关系:

run: a.out
    blah blah blah

a.out: rdata.c
    -sudo rm $@
    -gcc $< -o $@

(我不太了解java和hadoop来判断run规则。)