簡體   English   中英

有沒有辦法在瀏覽器中本地運行 C 程序?

[英]Is there a way to run C program locally in a browser?

是的,有重復的問題,但是5年前問過,好久沒更新了。

2020年隨着WebAssembly的發展,有沒有辦法在瀏覽器本地編譯運行一個簡單的C程序?

有一個叫做WasmFiddle的平台,可以在瀏覽器中編譯 C 為 wasm,但缺乏標准庫的支持,例如 stdio.h。 我認為我們可以在 js 中實現標准庫並將其導出到 wasm? 但這需要大量的工作。

我最初的目標是構建一個基於 Web 的 IDE 供學生學習 C 編程,而無需在服務器上花費很多進行遠程運行。 因此,只需要像 stdio.h、math.h、string.h 這樣的庫。

更新:似乎是 libc 到 wasm 的一個很好的實現。

不需要高性能,因此基於 wasm 的解決方案以及可能在 JS 中實現的運行 c 的 VM 都是很好的解決方案。

EmscriptenWASM是這里兩個流行的解決方案。

不要期望有很好的性能,但是您應該能夠將它與一點點 JavaScript、CSS 和 HTML 鏈接起來,以進行代碼編輯和控制台視圖。

如果你可以運行服務器,那么你可以使用這個Jupyter Notebook kernel: https://github.com/jupyter-xeus/xeus-cling

這是 WASM 中的一個示例,沒有服務器: https://github.com/tbfleming/cib

為了讓您對 emscripten 和其他相關技術可以做什么感到震驚,請查看Fabrice BellardTiny C CompilerTiny EmuJsLinux上的工作。

JsLinux,基本上在 JavaScript 中運行虛擬機,Bellard 有運行 Linux 和 Windows2000 的示例

您可以 go 核並將所有內容放入 VM,clang 作為二進制在一些輸入代碼上運行,並將一些二進制文件編譯為 output,然后再次在 VM 中運行所有客戶端,由於虛擬化而導致性能下降。

示例: https://twitter.com/alexpignotti/status/1261357985617469442?s=20 (我的一位同事正在研究這個問題)

您有 2 個選項,或者您獲得某種在瀏覽器中運行的 VM,該 VM 能夠運行 C 可以編譯到的某種架構,或者您使用 EMScripten 編譯為 WASM。

WASM 顯然是更好的選擇,因為它在所有(體面的)瀏覽器中都受到原生支持

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM