-
1 # 古海2021
-
2 # 一葉障目0001
Exe是可執行程式在磁碟儲存的格式,在程式執行之前由作業系統將可執行程式從磁碟載入到記憶體,再交給CPU去執行。這中間涉及到如何找到第一句可執行程式碼,哪些內容是程式碼,哪些是資料,還有第三方庫該如何去處理,這些都跟平臺相關。
每個作業系統對磁碟上的可執行檔案如何變成真正執行的可執行程式都有不同的標準。
-
3 # 悠閒的映日紅
舉個簡單的例子:
小張和小李大學是同班同學,都是學的機械設計,大學畢業後一起找到了同樣機械設計的工作工作,不過小張在A公司,小李在B公司。
那麼問題來了,學了同樣知識的兩個人,可以互換公司上班嗎?
詳細模擬一下,首先進辦公樓時,保安要求刷卡簽到(程式載入),發現無法透過,因為員工卡(win與mac的程式簽名)不同。
其次,進大樓後,找不到自己的工位(一個在15樓工作,一個在4樓工作)。
再次,協調工作的聯絡人(領導上下級)不同(程式呼叫介面不同)。
所以,exe程式無法在mac下使用,反之亦然。如果想使用,如果是採用的c語言,需要重新編譯(相當於重新發放員工卡,分座位,安排相關聯絡人)。
-
4 # 堯武808
exe檔案雖然是機器語言,但是隻能針對win系統使用。
MAC是獨立的系統,與win系統不相容,所以肯定不能使用。
如果想要使用EXE的啟動程式,需要在蘋果系統裡建立一個虛擬環境或者裝雙系統。
-
5 # griphin
別說windows和MAC這兩種截然不同的系統了,即便同樣是Windows,Win98程式大機率都不能在win10下跑。
EXE檔案不是機器語言,而是是被轉換成機器語言的二進位制檔案,也就是01的組合。但是不同平臺對01的組合規則是不一樣的。同樣是掰手指數數,大拇指和食指的組合,歐洲人認為是二,而華人認為是八。
拋開架構和平臺不說,絕大多數的軟體,並不是靠一個EXE檔案就能跑起來的,它是一個檔案團隊,很多必須的資源,是系統提供的,兩個不一樣的系統,怎麼呼叫?你在中國做電商,需要呼叫國家提供的支付環境和物流運輸系統。你現在把公司搬到美國,你還能繼續全國包郵,支付系統繼續使用微信支付寶麼?
-
6 # 天空之翼sky
簡單說就是任何應用程式都必須基於作業系統之上,由作業系統提供執行環境,才能正確的執行。如果寫一個不基於作業系統的程式,例如bios程式,就可以無視作業系統的區別,但是這種程式不能在任何作業系統裡執行
-
7 # 速碼爵士
把exe等同於機器指令這是很多人的誤解,其實Exe並不完全是機器語言指令,它只是個存放機器指令的容器,本質上和Office .doc檔案類似,exe的字尾名在登錄檔裡也有關聯項,Windows看到你雙擊了exe就會啟動相應的裝載器載入並執行。不同的是轉載器內建在win裡面。
這個檔案容器裡除了指令外還含有眾多的其他資訊,比如和執行相關的:裝入記憶體後用於配置執行記憶體用的各種符號地址表格,和執行無關的各種資源:任何資料檔案都可以打包進exe容器裡。你甚至可以把任意檔案新增到exe的屁股後面,這樣的exe仍能正常執行。
只要CPU指令相容,比如x64的Mac是完全可以執行原生的x64 exe的,主要問題其實只有兩個,1.exe檔案裝載器(把指令裝到記憶體裡配置好執行環境),2.需要各種依賴的執行庫(如user32,kernel32等等)。
免費開源的wine就是專門用來幹上面2件事的。在Mac下透過homebrew安裝wine,最新的arm架構的Mac下需要安裝crossover,然後就可以用wine指令把exe給跑起來。只要CPU架構一致,wine實際是原生執行exe中的指令,完全不靠虛擬機器。
就我而言,工作裡大部分情況都在Mac 下交叉編譯開發windows的程式(exe或dll),在Mac下直接執行exe用於驗證邏輯也是個硬性需求, 因此wine是一個非常有用的工具。
-
8 # 數理土豆餅
exe 裡有部分是機器語言,也就是晶片的指令集的二進位制表示,還有部分是對作業系統的呼叫,直接執行,缺乏作業系統的對系統呼叫的支援響應。linux 上安裝虛擬機器模擬Windows的系統呼叫 應該可以執行 exe檔案的。反正在 windows 系統上安裝 虛擬機器 再在上邊安裝 linux 系統,執行bin 檔案是沒有問題的。現在windows 上有安卓虛擬機器,可以直接執行安卓app. 在mac 上開發一個 虛擬機器,安裝windows 就可以執行 exe了。如果exe 可以直接執行,作業系統就沒有存在的價值了。作業系統就是把計算機的資源控制起來,exe只能透過作業系統呼叫資源。要不繫統裡同時有多個exe 在執行,彼此之間無法協調。
回覆列表
這是作業系統影響的!
exe檔案和mac可執行檔案,在底層,都是硬體能認識的二進位制格式指令。
但指令的執行不僅僅有可執行檔案裡二進位制指令就能執行,它還得呼叫系統裡庫的二進位制指令,但windows的exe檔案在mac系統裡就找不到需要的庫指令,因為尋找方法和格式都固定了,反過來也一樣。
再另外每種檔案格式都有自己的文性屬性識別標記,它mac開啟exe檔案,不給執行屬性,你就沒得執行可能。
當然你是可以做到在mac裡摸擬一個exe執行環境,讓exe在裡面執行,反之亦然。