编译与链接


文件到可执行文件

  • 预处理 cpp hello.c > hello.i处理#include预编译命令,处理#if #ifdef等条件预编译指令,展开#define宏定义,删除注释等编译前操作。
  • 编译 cc1 hello.c词法分析、语法分析、语义分析以及优化,输出汇编代码。
  • 汇编 as hello.s -o hello.o汇编代码为机器指令,输出为目标文件。
  • 链接 把可重定位文件依次读入,分析各个文件的文件头和section,并计算各个section的虚拟地址,对需要重定位的符号进行处理,设定它们的虚拟内存地址等,最终产生可执行文件或库。
gcc -E hello.c -o hello.i
gcc -S hello.i -o hello.s
gcc -c hello.s -o hello.o
编译与链接_第1张图片
image.png

你可能感兴趣的:(编译与链接)