Makefile不重建依赖项

时间:2012-10-14 17:05:03

标签: makefile

我是新手使用makefile并尝试生成基本的makefile作为大学练习的一部分。我有两个源代码文件chello.c和writeexit.s,它们必须编译/汇编然后链接以生成chello。

这是我目前为makefile编写的代码:

chello: chello.o  writeexit.o
  ld -N chello.o writeexit.o -o chello

chello.o: chello.c
  gcc -c chello.c -o chello.o

writeexit.o: writeexit.s
  as writeexit.s -o writeexit.o

在ld,gcc和所有标签之前的空格,所以我认为whitespacing很好。当我调用'make makefile'时,它返回'make:'makefile'没什么可做的。但是,如果我改变chello的依赖关系,比如chello.c,则会返回相同的消息,并且不会修改chello的行为。

2 个答案:

答案 0 :(得分:2)

来自man make

  

在makefile中执行命令以更新一个或多个目标   名称,其中名称通常是程序。如果不存在-f选项,   make将查找makefile GNUmakefile,makefile和Makefile,   按此顺序。

make makefile实际上会执行你的“makefile”(因为它列在手册页中的默认名称中),试图构建“makefile”目标(因为你传递的参数),已存在

您需要的是构建“chello”二进制文件,因此您必须输入:

make chello

或者:

make -f makefile chello

答案 1 :(得分:0)

这里的替代帐户,如果我只是调用“make”而不是“make makefile”,它似乎工作正常。这个问题可以忽略不计。