2016-12-29 65 views
0

因此,我在Linux上交叉編譯了Windows上的Go代碼(10),而且我實際上能夠在Windows和Linux上運行相同的可執行文件,這怎麼可能?在windows上運行編譯後的代碼

+0

本地運行Linux ELF可執行文件,你的意思是你跑在linux上的.exe文件,Windows上的Linux二進制,或者你想知道如何去編譯X-platform?因爲X平臺編譯不是新的...... C被設計爲可移植的,如果你堅持使用標準,也可以爲任何系統編譯相同的代碼 –

+0

你應該關注的是運行時運行時的工作方式,它做了什麼。簡而言之:將其運行時的大部分編譯到每個二進制文件中。檢查'GOROOT'文件,你會發現操作系統特定的源文件。其中一些將處理像goroutines和內存管理的事情。如果你可以編譯特定於操作系統的怪癖到一個單一的二進制文件中,並且你有一個編譯器知道如何用windows,linux和BSD可以理解的格式吐出可執行文件,那麼你完全有能力使用X - 編譯用戶代碼 –

+0

是的我在windows上執行linux二進制文件,linux二進制文件在windows上進行了交叉編譯爲linux編譯的代碼不能在windows上運行 –

回答

1

這會是新Windows Subsystem for Linux(WSL),它可以在Windows 10

+0

但是默認情況下不啓用? –

+0

據我所知,它是一個開發工具,默認情況下不啓用。您還必須從Powershell窗口啓動bash才能啓動完整的Ubuntu系統來執行ELF二進制文件。這不是幕後發生的事情。讓我知道如果我錯了。 –

相關問題