目标文件,一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成hex文件了。
OBJ只给出了程序的相对地址,而hex是绝对地址。
B. 编程编译时生成的obj文件和exe文件本质上有什么区别
本质上都是2进制代码,
但是
obj
没有经过链接的重定位,不是可执行的代码。
而且一个obj对应一个cpp编译单元,里面的外部符号都没解析出来。
比如a.cpp
通过b.h使用了一个
b.cpp里定义的函数
func();
那么a.cpp生成的obj里面只会有func()
这个函数名的调用而已,也就是一个(对a.obj来说的)外部符号。
只有经过链接成为了.exe,
相应于a.obj里面的func()的调用才会更新成实际的b.obj里面的func()的实际地址。
对全局变量也是同样的道理。
C. 对于obj和exe文件,既然都是二进制文件,计算机可以识别,为什么要进行
obj是源码编译文件,而exe是编译后的解释生成的文件。
虽然都是二进制文件,但是计算机底层的一些原理导致无法执行obj,
所以需要转化为exe
D. 源文件被编译成OBJ文件,这个OBJ文件是二进制文件么
是的,它们被称为目标文件,仅仅是你所编写的代码对应的二进制代码等,由你所编写的代码完全决定,并不包含其被调用程序的代码。
E. 将目标程序(.OBJ)转换成可执行文件(.EXE)的程序称为()。
连接程序。
obj文件是程序编译时生成的中间代码文件,目标文件一般是程序编译后的二进制文件,再通过链接器和资源文件链接就成exe文件,OBJ只给出了程序的相对地址,而EXE是绝对地址。
将目标程序转换为可执行文件的程序称为链接程序,编译器和汇编程序都经常依赖于链接程序,将分别在不同的目标文件中编译或汇编的代码收集到一个可直接执行的文件中。
(5)编译后obj是二进制吗扩展阅读:
注意事项:
目标程序是编译程序将源程序编译后的结果,如果是C++,那么后缀是.o。
编译程序一般是编译器公司(比如微软Intel他们都生产编译器)做的,将源代码转化为机器可识别的文件,经过链接,生成可执行程序。
解释程序即解释器,不需要经过编译阶段即可根据用户源程序执行,程序语言分编译类和解释类语言。
F. obj文件是怎么产生的
程序编译后的二进制文件,目标文件,编译时就产生了。
G. C语言源程序文件名的后缀是.OBJ,经过编译后,生成文件的后缀是什么经过连接后,生成文件的后缀是什么
C语言源程序文件名的后缀是.c。C源程序经过C编译程序编译之后生成一个后缀为.OBJ的二进制文件,
然后由称为“连接程序”的软件,把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。
由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。为了把源程序转换成机器能接受的目标程序,这时我们需要具有翻译功能的软件--“编译程序”。每种高级语言都有与它对应的编译程序。
(7)编译后obj是二进制吗扩展阅读
1、目标文件的扩展名为“.obj”(Windows)或“.o”(Linux)。目标文件已经是机器指令,但还不能运行,因为目标文件还没有解决函数调用问题。
2、可执行文件的扩展名为“.exe“。
H. 后缀为.obj和.exe的二进制文件都可以直接运行吗
不能。.exe文件可直接运行,.obj文件不能运行。
因为.exe属于可执行文件,.obj文件只是源代码生成可执行文件的过程中生成的过程文件。
在计算机DOS下,生成一个可执行文件,需要用编译器将源程序编译为obj文件,再用链接器将obj文件链接成exe文件。只有可执行文件才能直接运行。可执行文件还包括.sys文件 .com等类型文件。
拓展资料:
.obj文件与.exe文件的区别与联系:
1、obj里存的是编译后的代码跟数据,并且有名称,所以在连接时会出现未解决的外部符号。当
连成exe后便不存在名称的概念了,只有地址。
lib就是一堆obj的组合。 编译器会链接一些常用的库,其它的需要你自己指定。
2、目标文件,一般是程序编译后的二进制文件,通过链接器和资源文件链接就成可执行文件了。OBJ只给出了程序的相对地址,而可执行文件是绝对地址。CPP对应的二进制代码格式obj,是未经重定位的。
3、obj 文件和exe 文件都是二进制数据文件,其中obj 文件是COFF 格式,exe 文件时PE 格式。
参考资料来源:网络-可执行文件
参考资料来源:网络-编译
参考资料来源:网络-obj文件
I. C语言采用解释方式将源程序转换为二进制的目标代码吗
不是,C语言采用编译方式将源程序转换为二进制的目标代码。使用C语言编译器来完成。
所谓C语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照C语言的规则,将其转换成cpu可以执行的二进制文件。其本质在于对文件的读入,分析,及处理。
C语言编写的程序代码称为源程序,对于计算机本身来说,它并不能直接识别由高级语言编写的程序。C语言程序经C语言编译程序编译后,生成后缀为.obj的二进制文件(称为目标文件)。
此.obj文件必须与系统提供的各种库函数连接起来生成一个后缀为.exe的可执行文件才可以执行。C语言的可执行文件由一系列机器指令构成的。
(9)编译后obj是二进制吗扩展阅读
解释执行和编译执行是计算机语言的执行方式。解释执行由解释器现场解释执行,不生成目标程序。如BASIC便是解释执行,一般解释执行效率较低,低于编译执行。
编译执行由编译程序将目标代码一次性编译成目标程序,再由机器运行目标程序。如:PASCAL,C,C++,delphi等语言。效率高于解释执行。
J. c 语言编译后产生的obj文件是做什么的
简单的说就是目标代码.
obj文件是单独的目标文件,它还不能单独运行.需要把相关的obj文件连接到一起,才能产生可执行文件.