我是C / C ++的新手,正在使用下面的make文件运行make hello
。我正在使用Ubuntu 14.04 64位操作系统。
hello: main.o factorial.o hello.o
gcc main.o factorial.o hello.o -o hello -lstdc++
main.o: main.cpp functions.h
gcc -c main.cpp
factorial.o: factorial.cpp functions.h
gcc -c factorial.cpp
hello.o: hello.cpp functions.h
gcc -c hello.cpp
- 在make文件中我指定了gcc,但g ++的使用方法如下。为什么?
- 另外,在g ++命令中缺少-c
选项,因此出现以下错误。如何解决这个问题?
vm4learning@vm4learning:~/make$ make hello
g++ hello.cpp -o hello
/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
make: *** [hello] Error 1
答案 0 :(得分:1)
请参阅https://www.gnu.org/software/make/manual/html_node/Makefile-Names.html了解如何命名您的makefile
正如twalberg所指出的,看起来Make没有看到你附在文件顶部的规则。 make构建未知目标的默认行为包括查看是否存在具有目标名称的.cpp文件,然后如果该文件存在则运行hello
。所以,make没有看到你的规则。您的makefile不存在于您正在调用的目录中,它被错误命名,您的规则处于条件状态,或者您在同一目录中具有更高优先级的Makefile而没有 $(info "Running This Makefile)
目标。
你的makefile应该命名为GNUMakefile,makefile或Makefile,如果你有两个,make会选择第一个。您可以尝试添加
scan.nextLine()
到你的Makefile的顶部,看看它是否被看到了。