我是新手使用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的行为。
答案 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”,它似乎工作正常。这个问题可以忽略不计。