【发布时间】:2013-03-24 00:53:48
【问题描述】:
我正在尝试创建一个新的 C 程序,但无法编译该程序。这是因为我的 makefile 似乎是错误的。我不断收到“没有规则可以让目标‘全部’”和“没有规则可以让目标‘干净’”。这是我目前所拥有的:
主程序:
#include <stdio.h>
Sleepy() {
main (); {
printf("Hello world");
}
}
标题(虽然我还没有做任何事情):
#ifndef SLEEPY_H_
#define SLEEPY_H_
#endif /* SLEEPY_H_ */
还有 Makefile:
CC = gcc
CFLAGS = -c
Sleepy.o: Sleepy.c Sleepy.h
$(CC) $(CFLAGS) Sleepy.c
Sleepy: Sleepy.o
$(CC) -o Sleepy.exe Sleepy.o
all: Sleepy
clean:
rm -rf *.0 a.out
make = all
我一直在阅读各种教程,但我似乎无法让它发挥作用。有人可以帮我解决这个问题吗?
【问题讨论】:
-
makefile 问题修复后,会收到编译器的投诉。您的来源不正确。
-
@DanielFischer 我认为这是 Sleepy.c?无论如何,我不应该在这里发布这样的问题吗? 2 票反对似乎是这样说的。
-
@blutuu 您在
sleepy.c中遇到了一些一阶问题。首先,您需要从Sleepy()中获取main,即应该独立定义主函数。您是否要编写CTOR?接下来,main 有一个semi-colon,如main ();。为了您的目标,请删除分号。main应该返回一个整数,因此,请定义int main()并在 main 的末尾执行return 0;。最后,在您的 makefile 中,您可以在 makefile 的末尾删除make = all -
我想它叫做
Sleepy.c,它是你在“主程序”下列出的。 Ganesh 让我无需在此处列出错误(但您最好将其定义为int main(void)而不仅仅是int main())。在您的makefile 中,在clean下,删除*.0,这很可能应该是*.o。此外,make = all不应该在 makefile 中,并且可能all目标必须是它工作的第一个目标(不是 make 专家)。