例如:
有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链接目标文件?
您更改了一个规则:将程序main与目标文件链接起来的规则.当make做了那个链接时,你可以看到它被使用了gcc.
您没有做任何事情来更改用于编译目标文件的内置规则,因此它们使用默认值(变量的值CC)cc.
| 归档时间: |
|
| 查看次数: |
448 次 |
| 最近记录: |