程序被翻译成其它不同的格式
2022/7/7 14:20:13
本文主要是介绍程序被翻译成其它不同的格式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
程序被翻译成其它不同的格式
以main.c为例,程序文本如下
# include "stdio.h" int main() { printf("Hello World!\n"); return 0; }
在linux系统上,从源文件到目标文件的转化是由编译器驱动程序完成的:
gcc -o main.c main
gcc编译器驱动程序读取源程序文件main.c
,并且将它翻译成一个可执行目标文件main
。这个过程分为4个阶段,执行这四个阶段的程序(预处理器、编译器、汇编器和链接器)构成了编译系统。
- 预处理阶段:预处理器(cpp)根据以字符
#
开头的命令修改原始的C程序,即读取头文件的内容,将它直接插入到程序文本中,得到另一个C程序main.i
gcc -E main.c -o main.i
- 编译阶段:编译器(ccl)将文本文件
main.i
翻译称文本文件main.s
,它包含一个汇编语言程序
gcc -S main.i -o main.s
- 汇编阶段:汇编器(as)将
main.s
翻译成机器语言指令,打包成可重定位目标程序的格式,保存在main.o
中。
gcc -c main.s -o main.o
不用试图
cat -n main.o
,否则你将会看到一对乱码,因为这个文件是机器语言指令而不是字符
- 链接阶段:程序中调用了
printr()
函数,它存在与printf.o
的预编译目标文件中,链接器(ld)将其并入到main.o
中,得到可执行目标文件main
gcc main.o -o main
这篇关于程序被翻译成其它不同的格式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-13怎么通过 JavaScript 或其他编程语言来实现监听屏幕高度变化功能?-icode9专业技术文章分享
- 2024-11-12聊聊我们那些年用过的表达式引擎组件
- 2024-11-12让项目数据更有说服力:五款必备数据可视化管理工具推荐
- 2024-11-12人到一定年纪,要学会远离多巴胺
- 2024-11-12解读:精益生产管理的目的是什么?如何操作?
- 2024-11-12Sku预研作业
- 2024-11-12文心一言API密钥:分步申请指南
- 2024-11-12初学者指南:轻松掌握后台交互
- 2024-11-12从零开始学习:封装基础知识详解
- 2024-11-12JSON对象入门教程:轻松掌握基础用法