编译与链接


文件到可执行文件

  • 预处理 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
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容