制作文件问题:总是吐出“‘make.w’无事可做。”
Posted
技术标签:
【中文标题】制作文件问题:总是吐出“‘make.w’无事可做。”【英文标题】:make file issue : always spits out "Nothing to be done for `make.w'." 【发布时间】:2010-10-14 05:32:48 【问题描述】:我有 3 个文件 Head.cpp 、 Head.h 和 Hello.cpp 。我正在尝试为编译过程构建一个 make。我的makefile是make.w
Hello : Head.o Hello.o
g++ -o Head.o Hello.o
Head.o : Head.cpp
g++ -o Head.cpp
Hello.o: Hello.cpp
g++ -o Hello.cpp
每次我输入命令 make make.w - 我都会得到“Nothing to make fot make.w”。我不明白为什么会发生这种情况以及如何解决。
【问题讨论】:
【参考方案1】:由于您使用非默认生成文件 makefile
或 Makefile
调用 make
,因此您需要使用 -f
选项:
make -f make.w
^^
看起来您目前将其称为:
make make.w
这不起作用。它告诉make
在默认生成文件中创建目标 make.w
。
此外,当从.c
转换为.o
时,您需要使用-c
编译器标志,它告诉编译器只编译但不要链接 .此外,当使用-c
时,您不需要-o
,编译器将为您生成<filename>.o
。
Head.o : Head.cpp
g++ -c Head.cpp
^^
Hello.o: Hello.cpp
g++ -c Hello.cpp
^^
最后你在编译行中缺少可执行文件Hello
的名称:
Hello : Head.o Hello.o
g++ -o Head Head.o Hello.o
^^^^
【讨论】:
现在,我得到一个`make -f mkfl.w g++ -o Head Head.cpp /usr/lib/gcc/x86_64-linux-gnu/4.3.1/../../ ../../lib/crt1.o:在函数_start': (.text+0x20): undefined reference to
main'collect2:ld返回1退出状态make:*** [Head.o] Error 1`错误
我已经更新了答案,你需要使用-o
选项,如图所示。
谢谢,修改后尝试编译,出现如下错误 g++ -c -o Head Head.cpp g++ -c -o Hello Hello.cpp g++ -c -o Head.o Hello .o g++: Hello.o: 没有这样的文件或目录 g++: 没有输入文件 make: *** [ram] Error 1
我已经更新了我的答案。您不需要-o
选项,只需使用-c
。
谢谢,帮了大忙。我也在寻找构建共享和静态库的好教程。您是否建议阅读任何特定的文章?【参考方案2】:
make make.w
表示“在名为 Makefile
的默认生成文件中生成目标 make.w
”。
你想要指定你的makefile,所以你想要make -f make.w
【讨论】:
【参考方案3】:您需要在 makefile 名称前加上 -f。
make -f make.w
您可能还想指定要构建的目标
make -f make.w Hello
【讨论】:
以上是关于制作文件问题:总是吐出“‘make.w’无事可做。”的主要内容,如果未能解决你的问题,请参考以下文章