2012-10-14 106 views
0

我是使用makefiles并尝试生成基本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的行为不会被修改。

+0

你是怎么调用'make'的?这听起来像你可能正在输入'make makefile',而你应该输入'make -f makefile'或者(除非你有一个名为'Makefile'的文件在同一个目录中潜伏),只需要'make'。 –

回答

0

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

+0

只是为了补充一点,如果在调用make时没有指定目标,它将构建文件中列出的第一个目标。正因为如此,大多数Makefile的“全部”都将列为第一个目标。 – ThePosey

2

man make

构建在makefile执行命令来更新一个或多个目标 名称,其中名称是通常的程序。如果没有-f选项, make将按照该顺序查找makefile GNUmakefile,makefile和Makefile, 。

make makefile将实际执行你“的Makefile”文件(因为它是在手册页的默认名称之列),试图建立“Makefile文件”的目标(因为争论的你逝去的),这已存在

你需要的是打造 “chello” 二进制,所以你必须键入:

make chello

或者:

make -f makefile chello