我在参考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
答案 0 :(得分:1)
只需将run
规则放在all
之前。
您还可以重写all
规则并重命名,以减少冗余并正确处理依赖关系:
run: a.out
blah blah blah
a.out: rdata.c
-sudo rm $@
-gcc $< -o $@
(我不太了解java和hadoop来判断run
规则。)