2012-11-29 33 views
0

我讀了SO問題,我仍然有疑問 - Why an executable program for a specific CPU does not work on Linux and Windows?爲什麼windows應用程序不能在linux或mac中工作?

其中一個回覆說「每個操作系統都需要二進制文件符合特定的二進制格式」。

這是正確的嗎?如果是,那麼我們可以將其添加到上述語句 - 可執行文件包含二進制代碼(???)。假設100011表示5以windows二進制格式。但是這些相同的代碼在其他操作系統中意味着其他東西甚至什麼都不是所以,爲win製作的可執行文件在linux中不起作用。

+0

嘿!爲什麼要投票?如果你認爲這是一個愚蠢的問題,那麼請回答並啓發我。 –

回答

1

Windows和Linux使用不同的基礎構建。 Windows基於DOS,Linux基於UNIX。如果Windows已經發布了他們的操作系統的源代碼,那麼Linux可能會更兼容並且能夠運行Windows程序,但是這沒有發生。 Linux自己開發,所以可以理解,它會有所不同。除此之外,Linux還使用不同的系統命令和調用,因此儘管它們都具有「可執行程序」,但它們的執行方式與操作系統相關。

一個示例:在Windows打開命令提示並鍵入dir。這將列出當前目錄的所有文件和子目錄。但是,與目錄的列表內容相當的Linux是ls

來源:Why can't linux run windows programs?

0

一個原油,在回答我的問題簡單的英語嘗試 -

操作系統允許,應用程序/程序與硬件交互 - 顯示器,鍵盤,網卡等,它的作用類似於應用程序和硬件之間的中間人。

爲什麼我們需要擺在首位中間人?我不知道答案,但我會猜測。也許我們可以將代碼添加到我們的應用程序,這將允許它與所有硬件進行交互。但是,如果每個應用都這樣做,那麼每個應用都需要太多的空間 - 這是一種浪費。他們將是冗餘。例如,所有遊戲都有自己的代碼,以不同品牌的顯示器顯示遊戲畫面。也許還會有其他問題。

要與硬件交互,程序需要「交談」操作系統或進行「系統調用」。操作系統使用的「語言」稱爲「API」。每個操作系統都有獨特的API。因此,在Windows API中「交談」的程序將無法與Linux系統「交談」。

鏈接,我用 - http://en.wikipedia.org/wiki/Operating_system http://en.wikipedia.org/wiki/System_call

+0

如果任何人有CS和/或其中的學位的知識,請改善或更正此答案。 –

相關問題