C语言编译和链接过程

C语言文件编译和链接过程

总体过程

预处理 \rightarrow 编译 \rightarrow 汇编 \rightarrow 链接

在这里插入图片描述

预处理

cpp(c预处理器)将源程序main.c翻译成ASCII码的中间文件main.i

cpp [other arguments] main.c /tmp/main.i

编译

cc1(c编译器)将main.i翻译成ASCII汇编语言文件main.s

cc1 /tmp/main.i -Og [other arguments] -o /tmp/main.s

汇编

as(汇编器)将main.s翻译成可重定位目标文件main.o

as [other arguments] -o /tmp/main.o /tmp/main.s

sum.c经同样的过程,生成sum.o

链接

链接器程序ld将main.o、sum.o和一些必要的系统目标文件组合起来,创建一个可执行文件prog

静态链接库和动态链接库

  • 静态库在程序的链接阶段被复制到了程序中,和程序运行的时候没有关系

  • 动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用

发布了80 篇原创文章 · 获赞 68 · 访问量 7555

猜你喜欢

转载自blog.csdn.net/weixin_44048823/article/details/101421961
今日推荐