c语言编译生成的.obj文件是一种文本文件,程序编译时生成的中间代码文件目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。
obj文件基本结构:OBJ文件不需要任何种文件头(File Header),尽管经常使用几行文件信息的注释作为文件的开头。
OBJ文件由一行行文本组成,注释行以符号“#”为开头,空格和空行可以随意加到文件中以增加文件的可读性。有字的行都由一两个标记字母也就是关键字(Keyword)开头,关键字可以说明这一行是什么样的数据。
扩展资料:
C编译的整个过程很复杂,大致可以分为以下阶段:
1、预处理阶段
在该阶段主要完成对源代码的预处理工作,主要包括对宏定义指令,头文件包含指令,预定义指令和特殊字符的处理,如对宏定义的替换以及文件头中所包含的文件中预定义代码的替换等,总之这步主要完成一些替换工作,输出是同源文件含义相同但内容不同的文件。
2、编译、优化阶段
编译就是将第一阶段处理得到的文件通过词法语法分析等转换为汇编语言。优化包括对中间代码的优化,如删除公共表达式,循环优化等;和对目标代码的生成进行的优化,如如何充分利用机器的寄存器存放有关变量的值,以减少内存访问次数。
3、汇编阶段
将汇编语言翻译成机器指令。
参考资料来源:百度百科-c语言
C是程序代码百(即源文件)是保存你的C代码的文件,C文件依次编译,并对应。每个OBJ文件都被生成,即问目标文件的答案,是对应C文件的二进制版本,一旦连接,您就有了您的.exe文件,它是您的可执行文件。
Obj文件结构:Obj文件不需要任何类型的文件头,尽管用几行文件信息启动文件是很常见的。
OBJ文件由几行文本组成,注释行以符号“#”开头,空格和空白行可以随意添加到文件中,使其更具可读性。带有单词的行以一个或两个标记的字母(或关键字)开头,这些字母或关键字描述行是什么类型的数据。
扩展资料:
C编译的整个过程非常复杂,大致可以分为以下几个阶段:
1.预处理阶段
工作在这个阶段主要是源代码的预处理,主要包括宏定义指令,头文件包含指令,预定义的指令和特殊字符的处理,如更换一个宏定义和文件的文件头包含预定义的代码来代替,总之这一步主要做一些更换,输出相应的文件相同的意义,但不同的内容文件。
2.编译和优化
编译是通过词法分析将第一阶段处理的文件转换成汇编语言。优化包括中间代码的优化,如公共表达式的删除、循环优化等。并优化生成目标代码,如如何充分利用机器的寄存器来存储相关变量的值,以减少访问内存的次数。
3.组装阶段
将汇编语言翻译成机器指令。
obj是目标文件的意思。目标文件用以存放目标代码和由编译器或汇编器生成的相关数据的计算机文件格式称为目标文件格式。目标文件格式有许多不同的种类。最初每种类型计算机都拥有自身独特的格式,但随着Unix和其他可移植 *** 作系统的问世。*** 作步骤/方法
1 obj是目标文件的意思。
2 目标文件用以存放目标代码和由编译器或汇编器生成的相关数据的计算机文件格式称为目标文件格式。
3 目标文件格式有许多不同的种类。最初每种类型计算机都拥有自身独特的格式,但随着Unix和其他可移植 *** 作系统的问世,人们定义了例如COFF和ELF这些格式,并在不同的系统上使用它们。通常,链接器的输入和输出使用相同的文件格式,库文件和可执行文件格式也是一样使用相同的格式。
4 设计或选择一种目标文件格式是计算系统整体设计的关键部分。它影响着链接器的性能并因此影响着程序员在开发时的总耗时如果格式是用于可执行文件,那么格式的设计还会影响程序的开始运行花费的时间,以及影响到系统对用户请求的反应速度。大部分目标文件格式以区块的方式来组织,每一区块中都装载着同种数据。在虚拟内存系统需要这些块的时候,它可以通过将这些块分页后调入,无需进一步地处理就可使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)