当我在makefile中使用"gcc"时,在创建之后,我得到了一个"cc"输出

1 c linux gcc makefile

例如:

有3个源文件{ main.c test1.c test2.c}在目录中,命名的目录文件test3,并且有一个名为源文件test.c中的目录test3.

现在我想创建一个makefile来编译和链接这四个源文件.

这是我的Makefile:

# Cancel statement "CC=gcc"

src:=$(wildcard *.c) test3.c
obj:=$(patsubst %.c,%.o,$(src))

main:$(obj)
    gcc -o main $(obj)

.PHONY:clean

clean:
    rm *.o *~
Run Code Online (Sandbox Code Playgroud)

当我打电话make来编译它们时,我得到了这样的输出:

cc    -c -o main.o main.c
cc    -c -o test1.o test1.c
cc    -c -o test2.o test2.c
cc    -c -o test3.o test3/test3.c
gcc -o main main.o test1.o test2.o test3.o
Run Code Online (Sandbox Code Playgroud)

我知道'cc'在Linux中与'gcc'相关联.

我不明白为什么Make调用cc编译这四个源文件,但调用gcc链接目标文件?

Mad*_*ist 5

您更改了一个规则:将程序main与目标文件链接起来的规则.当make做了那个链接时,你可以看到它被使用了gcc.

您没有做任何事情来更改用于编译目标文件的内置规则,因此它们使用默认值(变量的值CC)cc.