本文共 1216 字,大约阅读时间需要 4 分钟。
预处理
在预处理阶段,编译器主要是加载头文件,宏替换,条件编译的作用,一般处理带"#"的语句gcc -E main.c > main.i
编译
在编译过程中,编译器主要是进行语法检查,在确认所有的指令都符合语法规则之后,将其翻译成中间代码或是汇编代码。gcc -S main.i -o main.s
汇编
汇编阶段主要是把编译阶段产生的.s文件转成二进制目标码gcc -c main.s -o main.o
链接
在成功汇编后就进入了链接阶段,链接就是将目标文件、启动代码、库文件链接成可执行文件的过程,这个文件可被加载或拷贝到内存里执行。gcc main.o -o main
gcc main.c -o main
all: gcc main.c test.c
因为没有依赖,所以无法判断依赖的时间是不是比目标新,所以make之后总是会执行命令
解决以上问题:
a.out: main.c test.c gcc main.c test.c
增加依赖之后:
“:=” 立即赋值
“=” 延时赋值 “?=” 条件赋值 如果没有赋过值 就赋值 否则不赋值 “+=” 追加赋值B := $A #立即赋值C = $A #延时赋值A = 10D = 20D ?= $A #条件赋值E = 30E += $A #追加test: @echo "B = $B" @echo "C = $C" @echo "D = $D" @echo "E = $E"
输出结果:
B = C = 10 D = 20 E = 30 10转载地址:http://kxqqj.baihongyu.com/