编译和链接
编译
包括如下几个过程:
预编译:
gcc -E hello.c -o hello.i编译:
编译过程就是把预处理完的文件进行一系列词法分析、语法分析及优化后生产相应的汇编代码文件;
gcc -S hello.i -o hello.s汇编
汇编器将汇编代码转成机器可执行的指令
as hello.s -o hello.ogcc命令从c源代码开始,经过预编译、编译和汇编直接输出目标文件。
gcc -c hello.c -o hello.o链接
ld
编译器做了什么
词法分析 -> 语法分析 -> 语义分析 -> 源代码优化 -> 代码生成 ->目标代码优化
静态链接
链接过程主要包括了地址解析和重定位。