作者leicheong (睡魔)
看板CSSE
标题Re: [问题] linux正常情况为何不能执行exe档
时间Mon Apr 2 18:30:09 2007
※ 引述《final01 (牛顿运动定律)》之铭言:
: 是compiler.libc.linker-editor .program loader
: 哪一个阶段使他不能执行呢?
: 应该是LINKER就会有差别了吧?
: WINDOWS的Libc应该跟LINUX一样吧?或是有些许差别?
: 这里的LIBC应该就是GLIBC吧?
: 这问题想很久了~谢谢指教
执行档的格式根本不同.
Windows用的执行档是PE格式, Linux用的是ELF格式.
详细的比较可以看这里:
http://www.acm.uiuc.edu/sigmil/RevEng/ch08.html
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.134.126.84
※ 编辑: leicheong 来自: 202.134.126.84 (04/02 18:32)
1F:推 final01:我知道是格式不同~想问是谁用成不同格式的 04/02 18:40
2F:→ final01:照你这样讲是COMPILER搂?因为可下ELF格式参数 04/02 18:41
3F:→ H45:有些原始码会依存某些lib,而这些lib又因os而异 04/02 19:18
4F:→ H45:所以光是source code就应写成Windows版和Linux版甚或Mac版三种 04/02 19:20
5F:→ H45:不过如果是无依存关系的程式,就不需要想这麽多了.... 04/02 19:21
6F:→ H45:我举个例吧,如果写个程式要使用到3D硬体加速的话,该怎麽办 04/02 19:22
7F:推 TroyLee:OpenGL 好像可以跨平台, 用 GLUT 的 Lib ? 04/02 20:22
8F:推 as1986:windows和linux的syscall完全不一样 04/03 12:25
9F:推 leicheong:Lib倒不一定是主要原因, 可以像RAR一样用link成static 04/03 15:18
10F:→ leicheong:我想如果问这问题的话, 先假定这EXE只做变数连算而不 04/03 15:20
11F:→ leicheong:输出结果好了... 04/03 15:21
12F:推 gwliao:其实WinXP中很多程式都不能在MS DOS 6.2当中执行. 04/04 02:52
13F:→ gwliao:同一家的OS都这样了, 何况是不同作者的OS. 04/04 02:53
14F:→ gwliao:很多时候, 相同的样子是会被告. 04/04 02:55
15F:→ gwliao:不同的话, 也是该OS对那不同之处有自己的见解. 04/04 02:55
16F:→ gwliao:不同的见解当然会带来不同的实作结果. 04/04 02:56
17F:推 drkkimo:不同格式的执行档loader看不懂 04/06 22:28
18F:→ drkkimo:道理好像不同格式档案用不同程式开一样 04/06 22:29
19F:推 welon:Windows 那个不是叫COFF 04/10 19:14
20F:→ zhim:coff 是 obj的格式吧 05/19 06:16