主题:OBJ与EXE有什么区别?
euclid
[专家分:1670] 发布于 2005-06-13 20:18:00
不同样是机器码吗?书上只提到一句,就是OBJ只给出了程序的相对地址,而EXE是绝对地址,哪位高手能详细解释一下?
回复列表 (共9个回复)
沙发
digital1010 [专家分:1430] 发布于 2005-06-13 20:23:00
因为OBJ还有一些浮动地址需要处理。
机器必需知道它们的绝对地址。
板凳
euclid [专家分:1670] 发布于 2005-06-13 20:34:00
仅仅是这样吗
3 楼
digital1010 [专家分:1430] 发布于 2005-06-14 19:28:00
可以这么说。只有这些。
4 楼
qianlima210210 [专家分:1110] 发布于 2005-06-19 11:08:00
.obj文件是编译的二进制目标文件,.exe是可执行文件
5 楼
心思飞 [专家分:710] 发布于 2005-06-26 10:34:00
OBJ是你去执行某一文件时的目标文件,而EXE只是执行这个代码的一个连接!
6 楼
euclid [专家分:1670] 发布于 2005-06-26 19:50:00
能不能举个例子,怎样把obj改成exe?人工改
7 楼
心思飞 [专家分:710] 发布于 2005-06-28 23:11:00
晕哦,这个问踢我还没想过呢!不好意思哦!~~~~
8 楼
wangwsz [专家分:0] 发布于 2005-07-06 14:11:00
OBJ是目标文件,EXE是可执行文件,它们同样都是二进制文件(说白了计算机里的一切数据哪个不是二进制的?)。只是前者的文件地址是相对的,后者是绝对的。前者由于地址不是绝对分配的,所以不能作为应用软件,也就是说不能完成任何动作(做软件不就是要完成智能控制的动作吗),而后者可以。可以说exe是obj的继续,够清楚了吧!
9 楼
cracker007 [专家分:22140] 发布于 2005-07-12 09:59:00
obj与exe不同的除了各位所说,还有两点:当程序较大时,需要链接器把数个obj链接在一起。即使是单一的obj,其中有些注释(在编译过程中产生)是不能被执行的,需要靠链接器转换成可执行代码。
我来回复