您当前的位置:首页 > 互联网教程

c语言编译生成的.obj文件解释下

发布时间:2025-05-16 05:36:01    发布人:远客网络

c语言编译生成的.obj文件解释下

一、c语言编译生成的.obj文件解释下

c语言编译生成的.obj文件是一种文本文件,程序编译时生成的中间代码文件目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。

obj文件基本结构:OBJ文件不需要任何种文件头(File Header),尽管经常使用几行文件信息的注释作为文件的开头。

OBJ文件由一行行文本组成,注释行以符号“#”为开头,空格和空行可以随意加到文件中以增加文件的可读性。有字的行都由一两个标记字母也就是关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。

C编译的整个过程很复杂,大致可以分为以下阶段:

在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。

编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。

二、C语言为什么要生成.obj文件

计算机只能识别0,1组成的2进制的指令,而不能直接识别和执行高级语言写的命令,为了使计算机能执行高级语言源程序(也就是source program),必须先用一种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序(也就是object program)”,实际上就是让机器能识别高级语言。

三、c语言的扩展名是什么

1、源程序:程序可以用高级语言或汇编语言编写,用高级语言或汇编语言编写的程序称为源程序。C语言源程序的扩展名为“.c”。源程序不能直接在计算机上执行,需要用“编译程序”将源程序编译为二进制形式的代码。

2、目标程序:源程序经过“编译程序”编译所得到的二进制代码称为目标程序。目标程序

3、目标代码尽管已经是机器指令,但是还不能运行,因为目标程序还没有解决函数调用问题,需要将各个目标程序与库函数连接,才能形成完整的可执行程序。

4、可执行程序:目标程序与库函数连接,形成的完整的可在操作系统下独立执行的程序

5、称为可执行程序。可执行程序的扩展名为“.exe“。

6、编辑:就是创建和修改C程序的源代码-我们编写的程序称为源代码。

7、编译:就是将源代码转换为机器语言。编译器的输出结果成为目标代码,存放它们的文件称为目标文件。扩展名为.o或者.obj。(该部分编译是指汇编器编译汇编语言或者编译器编译高级语言)

8、链接:链接器将源代码由编译器产生的各种模块组合起来,再从C语言提供的程序库中添加必要的代码模块,将它们组成一个可执行的文件。在windows下扩展名为.exe,Unix下无扩展名。

9、IT专家网——C语言编程程序编译全过程剖析