0

我正在尝试编写一个 Makefile 但它正在显示 Make: Don't know how to make cc. Stop.

我正在做的是: -Hello.c

#include<stdio.h>
extern int print();
int main(){
 print();
 return 0;
}

打印.c

#include<stdio.h>
int print(){
 printf("hello\n");
 return 0;
}

生成文件

all: OUT
OUT: cc Hello.o print.o -o OUT
Hello.o: Hello.c\
         cc -c Hello.c
print.o: print.c \
         cc -c print.c
clean:  rm -f *.o
clobber: rm -f OUT

当我写 make $>make Make: 不知道如何制作 cc。停止。

$>make clean Make: 不知道如何制作 rm。停止。

我错过了什么..

我是这个make和makefile的新手,所以请给我一些关于这个的好教程

我改成这个:-

all: OUT

OUT:; @cc Hello.o print.o  -o OUT

Hello.o:; @cc -c Hello.c

print.o:; @cc -c print.c

clean:; @rm -f *.o

clobber:; @rm -f OUT

显示错误:-

cc: warning 1913:Hello.o' 不存在或无法读取 cc:警告 1913:print.o' does not exist or cannot be read ld: I/O error, file "Hello.o": No such file or directory Fatal error. *** Error exit code 1

4

1 回答 1

4

规则必须与目标位于不同的行,并使用硬制表符缩进:

all: OUT
OUT: Hello.o print.o
        cc Hello.o print.o -o OUT
Hello.o: Hello.c
        cc -c Hello.c
print.o: print.c
        cc -c print.c
clean:  
        rm -f *.o
clobber:
        rm -f OUT

但这可以通过依赖隐式规则来简化,并通过使用一些变量来概括:

all: OUT
OUT: Hello.o print.o
        $(CC) $(CFLAGS) $^ -o $@
clean:
        rm -f *.o
clobber:
        rm -f OUT
于 2013-06-04T09:42:09.817 回答