网站首页 > 文章精选 正文
一直借助IDE自动编译生成可执行文件,没有仔细关注这个过程,今天正好有空,查查资料来总结一下。
我们写的C程序都是我们人类可以读懂的文本。可是为了在系统上运行我们的程序,必须把我们的C程序中每条语句转换成机器语言指令的,同时要把这些指令按照可执行目标文件格式组织成可执行目标文件。这种转换通常由编译器驱动程序完成,比如:gcc;
假设我们有一个hello.c源文件,要把它翻译成一个可执行文件hello,需要经历四个阶段:
- 预处理阶段:预处理器(cpp)根据以字符#开头的命令,修改hello.c,这一阶段处理完成w会得到另一个C程序,通常是以.i作为文件扩展名,如hello.i;
- 编译阶段:编译器(ccl)将文本文件hello.i翻译成文本文件hello.s,它是一个汇编语言程序。
- 汇编阶段:汇编器(as)将hello.s翻译成机器语言指令并将这些指令打包成可重定位目标文件,如hello.o;(汇编语言是非常有用的,因为它为不同高级语言的不同编译器提供了通用的输出语言。)
- 链接阶段:链接器(ld)将hello.o和它依赖的文件(如printf.o)链接在一起,组织成一个可执行目标文件hello,这个文件是可以被加载到内存中,由系统执行。
- 上一篇: 运行C程序的步骤和方法
- 下一篇: 深入理解计算机系统 1.2 从源文件到可执行目标文件
猜你喜欢
- 2025-05-27 C语言基础
- 2025-05-27 微信大更新!新增5个新功能,还有6个新变化
- 2025-05-27 Win10学院:Setup.exe命令行参数详解
- 2025-05-27 手机一联接电脑,电脑就蓝屏
- 2025-05-27 聊聊C语言-兵马未动粮草先行(2)
- 2025-05-27 C语言数学库的3种类型
- 2025-05-27 我的编程梦----聊聊Java特性
- 2025-05-27 大话C语言:C语言的前世今生
- 2025-05-27 Windows电脑文件的扩展名(后缀名)有哪些,有什么用?
- 2025-05-27 “快捷方式”不简单
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)
- mysql数据库面试题 (57)