作者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