[爆卦]linux執行exe是什麼?優點缺點精華區懶人包

為什麼這篇linux執行exe鄉民發文收入到精華區:因為在linux執行exe這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者pluseus (回憶真美麗)看板C_and_CPP標題[問題] 請問為什麼Win和Linux執...



問題(Question):

抱歉問一個蠢問題

請問為什麼在Windows OS下compile過後的執行檔(.exe)

拿到「同一台」機器下的Linux OS,為什麼不能執行?

而要在Linux下source code重新compile才能使用


我會有這個問題

是因為我的理解是,source code經過compile過後

就變成for某種cpu的機器碼了(例如x86機器碼)

而Windows OS和Linux OS,因為是同一台機器,假如也都是使用相同的x86機器碼

但是為什麼執行檔在不同OS不能互通呢?


謝謝! ^^



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.113.225
※ 編輯: pluseus 來自: 140.109.113.225 (07/03 12:17)
hilorrk:binary格式不同 & 呼叫到很多系統服務 07/03 12:27
donby:這時候又要推薦"程式設計師的自我修養"這本書了~XD 07/03 12:33
donby:我記得好像是ABI不相容相關的章節有講@@? (有錯請指正XD) 07/03 12:34
Bencrie:你要硬上可以試試用 wine 橋接 07/03 12:40
MovEAX:PE vs coff .... 07/03 12:50
MovEAX:windows.h vs X11.. 07/03 12:51
MovEAX:gstreamer vs directShow ....太多了 打不完 07/03 12:52

M大打的看不懂 @@"
不過h大打的大概能想像 系統服務像是程式在執行期配置記憶體是透過OS來完成
另外我會去找d大推薦的那本書來看
anyway,謝謝幾位的解答!

※ 編輯: pluseus 來自: 140.109.113.225 (07/03 13:00)
erspicu:你是大一新生嗎?或是還沒上大學的高中生? 會這樣問 07/03 14:12
erspicu:不要虧你 只是好奇 這種應該算是非常基礎的問題 怎麼不會 07/03 14:13

Yeap, I know it's a question quite fundamental and stupid.
I have said it in my post first line.

但是你不該很本位地把所有上來問問題的人都想成是資訊相關背景出身的人

我問了一個歷史很簡單的問題,所以我必須要是一個歷史系的學生?
還是我要是一個還沒上大學的高中生?

不是每個寫程式的人都詳細瞭解編譯器編譯時做了甚麼,不是嗎?

我覺得你都沒有看我的問題敘述
我有打為什麼我會有這樣的問題

我的思路很簡單,因為編譯器要把source code翻譯成cpu看得懂的機器語言
而同一台機器所需要機器語言是相同的
雖然是在不同OS編譯,但最後的所生成的執行檔的目標是相同的
所以我有這個問題,為什麼不同OS編譯下的執行檔不能互通

當然我的想法過於簡化
中間省略掉很多
而中間省略掉的部分
就是我不知道的部分、希望要問的地方

如果您願意提供一點方向
就算是告訴我哪裡有答案、要我自己去查
我都會很感謝

12:34,donby先生推薦了「程式設計師的自我修養」這本書
我13:40就衝到台北重慶南路天瓏去買了
http://img834.imageshack.us/img834/6606/l0un.jpg


不論如何,謝謝你下面的解答


erspicu:就一卡車的東西都不一樣 就沒辦法執行 先是載入格式就不同 07/03 14:14
erspicu:再來是系統api層也不同 除非靠wine 不然搞不懂怎麼能互通 07/03 14:14
erspicu:就算是JAVA或是c# MONO跨平台實做 牽涉到os相關的功能 07/03 14:15
erspicu:也是會有一堆問題需要相容修正 不是同X86就ok 07/03 14:15
erspicu:會有WIN32編出的exe執行擋 怎麼不能拿去linux上跑的疑問 07/03 14:16
erspicu:讓我還滿訝異的 靠WINE 其實如果API沒支援到 一樣有問題 07/03 14:16
holik0123:LINUX->ELF格式不同 WIN->? 07/03 14:32
※ 編輯: pluseus 來自: 140.109.113.225 (07/03 15:29)
MOONRAKER:火氣很大喔。 07/03 16:35
purpose:罵你的才是比較會回答你的人,要我說的話,google 就可以 07/03 17:13

罵?請問您覺得我的問題有那裡任何不妥的地方,需要被「罵」嗎?

purpose:找到答案了,一堆人問過的問題 07/03 17:14
donby:不要起爭議啦~XD 話說這本書滿不錯的~ 07/03 19:01
donby:雖然我還是有很多地方都不懂XD 07/03 19:01

謝謝您推薦的書,I am reading the book.
書本P4開宗就講了那書本要探討的問題之一:「不同的編譯器(Microsoft VC、GCC)和不同
平台(x86、SPARC、MIPC、ARM),以及不同的作業系統(Windows、Linux、UNIX、
Solars),最終編譯出來的結果一樣嗎?為什麼?」
正好是我要的!非常謝謝!

chchwy:這問題哪裡蠢了 問問看板上有多少人能回答的正確XDDD 07/03 20:10
x000032001:你寫的程式是交付給OS跑不是機器 07/03 20:45

謝謝您的一句話,讓我豁然開朗

maerdimer:那麼 why 不能問? 人家都說只是 curiosity 了 07/03 20:49
※ 編輯: pluseus 來自: 220.136.227.160 (07/03 21:47)
purpose:問問題,得到東西才是重點,就這樣 07/03 21:48

是的,所以我還是非常感謝的 :)

※ 編輯: pluseus 來自: 220.136.227.160 (07/03 21:50)
rephansu:C#編出來的執行檔(exe)是不是能在Linux上跑?? 07/03 22:35
littleshan:沒有native call的話,可以 07/04 00:30
zorro500021:我覺得原po問問題的態度沒有很糟糕阿 07/04 16:45
zorro500021:是我太遲鈍了嗎= = 07/04 16:46
kikiqqp:轉成電腦看懂的機械碼是相同的,但要人看還是會透過OS 07/05 11:12
kikiqqp:所以只好拉不同作業系統所需要的檔案來編譯,就..不相容了 07/05 11:13

你可能也想看看

搜尋相關網站