Re: [問題] 請問為什麼Win和Linux執行檔不能互通?

看板C_and_CPP作者 (信)時間12年前 (2013/07/09 03:30), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《pluseus (回憶真美麗)》之銘言: : 問題(Question): : 抱歉問一個蠢問題 : 請問為什麼在Windows OS下compile過後的執行檔(.exe) : 拿到「同一台」機器下的Linux OS,為什麼不能執行? : 而要在Linux下source code重新compile才能使用 : 我會有這個問題 : 是因為我的理解是,source code經過compile過後 : 就變成for某種cpu的機器碼了(例如x86機器碼) : 而Windows OS和Linux OS,因為是同一台機器,假如也都是使用相同的x86機器碼 : 但是為什麼執行檔在不同OS不能互通呢? : 謝謝! ^^ 可以參考這篇 編譯、組譯、直譯 的解釋 http://tw.knowledge.yahoo.com/question/question?qid=1106101311818 組譯:將組合語言轉成機械語言稱為組譯 (Assembling) , 組合語言(assembly)是一種非常接近機器碼的語言。所以將組合語言轉成機器碼的工具 稱為組譯器(assembler),反過來將機器碼轉成組合語言的工具稱為反組譯器( dissembler)。 高階語言的執行方式有編譯式與直譯式兩種 編譯:編譯式的語言是將原始程式碼透過編譯器 (Compiler) 轉成機械碼,再直接執行機 械碼。主要的優點是速度快,並可一次找出程式中不合文法的部份。編譯式的語言如 C, FORTRAN, COBOL 等均是。 直譯:直譯式的語言是利用直譯器 (Interpreter) 對原始程式碼一邊讀解,一邊執行。 主要的優點是對於初學者較易於使用。直譯式的語言如 Basic, dBASE III 及其他 Script Language 等。 --------------------------------------------------------------------------- 而原PO問的為什麼compile後的執行檔不能直接在win/linux-like環境下通用 因為c/c++就是編譯式語言,會根據不同的作業系統環境使用不同的底層API跟硬體溝通 就像win跟linux 同樣遵守OSI Model, 但實作方法也不同 也因為有跨平台的需求,才會衍生發展出java這類透過vm解決環境不同的語言 以上個人觀念有錯的話 請給予指教 謝謝:) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.240.193.182

07/09 10:11, , 1F
最簡單的說法是program loader不互通
07/09 10:11, 1F

07/09 12:02, , 2F
英文打錯囉 是 disassembler
07/09 12:02, 2F
文章代碼(AID): #1HsnDZux (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1HsnDZux (C_and_CPP)