Makefile适用于OS X,但不适用于Ubuntu

时间:2016-11-21 16:24:37

标签: c macos ubuntu

我想知道StackOverflow今天是否可以帮助我!因此,我目前正在为我在Uni的一个CS课程完成一个C项目,我遇到了一个有趣的问题。当我在我的OSX环境中使用命令'make'和'make test'时它运行得很好,但是当我在Ubuntu虚拟机上测试它时,它给了我这些错误:

make:prim:找不到命令

makefile:32:目标'测试失败的配方。

make:*** [test]错误127

下面是我的makefile代码,感谢任何帮助。

OBJS = main.o scanner.o AM.o binheap.o CDLL.o node.o prim.o vertex.o
OPTS = -Wall -Wextra -g -std=c99

main : $(OBJS)
    gcc $(OPTS) $(OBJS) -o prim -lm

main.o : main.c scanner.h AM.h binheap.h CDLL.h node.h prim.h vertex.h
    gcc $(OPTS) -c main.c

scanner.o : scanner.c scanner.h
    gcc $(OPTS) -c scanner.c

node.o : node.c node.h
    gcc $(OPTS) -c node.c

AM.o : AM.c AM.h
    gcc $(OPTS) -c AM.c

prim.o : prim.c prim.h
    gcc $(OPTS) -c prim.c

binheap.o : binheap.c binheap.h
    gcc $(OPTS) -c binheap.c
CDLL.o : CDLL.c CDLL.h
    gcc $(OPTS) -c CDLL.c

vertex.o : vertex.c vertex.h
    gcc $(OPTS) -c vertex.c

test: prim
     @echo ###############################
     @echo TESTING GRAPH1.TXT
     @echo prim graph1.txt
     @echo ###############################
     prim graph1.txt
     @echo ###############################
     @echo TESTING GRAPH2.TXT
     @echo prim graph2.txt
     @echo ###############################
     prim graph2.txt
     @echo ###############################

clean :
    rm -f $(OBJS) main

2 个答案:

答案 0 :(得分:2)

make: prim:Command not found

该错误消息告诉您错误的原因。在Ubuntu的prim中找不到PATH。假设prim是您刚刚在本地目录中构建的程序,那么您应该在Makefile中运行./prim

答案 1 :(得分:0)

我想你想改变这个:

main : $(OBJS)
    gcc $(OPTS) $(OBJS) -o prim -lm

为:

prim : $(OBJS)
    gcc $(OPTS) $(OBJS) -o prim -lm

此外,除非prim以某种方式在路径上,否则您的shell将无法找到它。将测试规则编写为:

可能更好
test: prim
     @echo ###############################
     @echo TESTING GRAPH1.TXT
     @echo prim graph1.txt
     @echo ###############################
     ./prim graph1.txt
     @echo ###############################
     @echo TESTING GRAPH2.TXT
     @echo prim graph2.txt
     @echo ###############################
     ./prim graph2.txt
     @echo ###############################