摘要:如何判斷環(huán)境變量是否配置成功呢可以使用命令行工具在非目錄下,執(zhí)行,看看結(jié)果是不是類似下面如果是,那么恭喜你已經(jīng)安裝成功了。
javascript 這門語(yǔ)言的性能無(wú)法與原生的C/C++代碼相媲美,為了進(jìn)一步提高網(wǎng)頁(yè)的性能,業(yè)界推出了WebAssembly技術(shù):將C語(yǔ)言編譯成了瀏覽器可以執(zhí)行的wasm文件。WebAssembly不僅提高了網(wǎng)頁(yè)的性能,而且還可以完成原來(lái)javascript無(wú)法實(shí)現(xiàn)的功能。
要想使用WebAssembly,就需要通過(guò)Emscripten編譯器將C語(yǔ)言編譯成wasm文件,但是官方安裝教程不夠細(xì)致,可能會(huì)讓開發(fā)者造成困惑而導(dǎo)致安裝失?。ū緦殞毦褪×撕枚啻危杂X(jué)得有必要寫本文)。
PS:本文是windows系統(tǒng)Emscripten編譯器安裝教程
步驟一:克隆emsdk倉(cāng)庫(kù)# 克隆emsdk倉(cāng)庫(kù),并執(zhí)行安裝 git clone https://github.com/juj/emsdk.git步驟二:安裝
# 定位到emsdk文件夾 cd emsdk # 執(zhí)行 update emsdk update # 安裝各種工具 emsdk install latest
在執(zhí)行emsdk install latest會(huì)下載安裝很多東西,時(shí)間會(huì)有些久,最后一個(gè)需要下載的東西(emscripten-x.xx.xx.zip)是從github下載的,經(jīng)常會(huì)下載失敗。
好在第一次執(zhí)行 emsdk install latest 成功下載并安裝的東西,當(dāng)你再次執(zhí)行 emsdk install latest 的時(shí)候并不需要重新下載安裝,所以如果你發(fā)現(xiàn)emscripten-x.xx.xx.zip下載失敗,可以復(fù)制命令行中的下載地址,使用迅雷先下載好,按照命令行中的保存路徑,事先將.zip放到那個(gè)路徑下面,事情就解決了。
# 生成 ~/.emscripten 文件,激活配置 emsdk activate latest
最后,雙擊emsdk目錄下的emsdk_env.bat文件配置環(huán)境變量,不過(guò)我雖然雙擊了,但是環(huán)境變量并沒(méi)有被設(shè)置。如何判斷環(huán)境變量是否配置成功呢?可以使用命令行工具在非emsdk目錄下,執(zhí)行emcc -v,看看結(jié)果是不是類似下面:
C:UsersAdministrator>emcc -v emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 1.37.36 clang version 5.0.0 (emscripten 1.37.36 : 1.37.36) Target: x86_64-pc-windows-msvc Thread model: posix InstalledDir: D:Applicationemsdkclange1.37.36_64bit INFO:root:(Emscripten: Running sanity checks) C:UsersAdministrator>
如果是,那么恭喜你已經(jīng)安裝成功了??梢院雎圆襟E三了。
步驟三:配置環(huán)境變量打開剛才克隆下來(lái)的emsdk文件夾,雙擊執(zhí)行emcmdprompt.bat文件,可以看到如下內(nèi)容(我把emsdk克隆到了D:Application下,所以下面有很多D:Application,實(shí)際情況以你們克隆保存目錄為準(zhǔn)):
Adding directories to PATH: PATH += D:Applicationemsdkclange1.37.36_64bit PATH += D:Applicationemsdk ode8.9.1_64bitin PATH += D:Applicationemsdkpython2.7.13.1_64bitpython-2.7.13.amd64 PATH += D:Applicationemsdkjava8.152_64bitin PATH += D:Applicationemsdkemscripten1.37.36 Setting environment variables: EMSDK = D:/Application/emsdk BINARYEN_ROOT = D:Applicationemsdkclange1.37.36_64bitinaryen JAVA_HOME = D:Applicationemsdkjava8.152_64bit EMSCRIPTEN = D:Applicationemsdkemscripten1.37.36
這堆東西用來(lái)讓你配置環(huán)境變量的,右鍵我的電腦 -> 屬性 -> 高級(jí)系統(tǒng)設(shè)置 -> 環(huán)境變量,在系統(tǒng)變量的Path值中添加:
D:Applicationemsdkclange1.37.36_64bit;D:Applicationemsdk ode8.9.1_64bitin;D:Applicationemsdkpython2.7.13.1_64bitpython-2.7.13.amd64;D:Applicationemsdkjava8.152_64bitin;D:Applicationemsdkemscripten1.37.36
新建系統(tǒng)變量EMSDK,值設(shè)置為D:/Application/emsdk
新建系統(tǒng)變量BINARYEN_ROOT,值設(shè)置為D:Applicationemsdkclange1.37.36_64bitinaryen
新建系統(tǒng)變量JAVA_HOME,值設(shè)置為D:Applicationemsdkjava8.152_64bit
新建系統(tǒng)變量EMSCRIPTEN,值設(shè)置為D:Applicationemsdkemscripten1.37.36
點(diǎn)擊確定退出設(shè)置,嘗試在其他非emsdk目錄執(zhí)行 emcc -v 檢查是否配置成功。
步驟四:編譯第一個(gè)wasm文件在其他文件夾新建一個(gè) index.c 文件(我參考了這篇文章中代碼:讓C代碼在瀏覽器中運(yùn)行):
#include#include #include #include // 一旦WASM模塊被加載,main()中的代碼就會(huì)執(zhí)行 int main(int argc, char ** argv) { printf("WebAssembly module loaded "); } // 返回1-6之間的一隨機(jī)數(shù) int EMSCRIPTEN_KEEPALIVE roll_dice() { srand ( time(NULL) ); return rand() % 6 + 1; }
然后用命令行工具定位到這個(gè)文件夾,執(zhí)行:
emcc index.c -s WASM=1 -O3 -o index.js
等待片刻之后,你就能夠看見(jiàn)生成了兩個(gè)新文件:
index.js index.wasm
你可以用html引入這個(gè)index.js試試(index.wasm必須和index.js在同一路徑下)
end.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/93993.html
摘要:寫在前面之前做過(guò)一段時(shí)間的的研究,寫過(guò)幾個(gè),并且閱讀并翻譯了很多篇官方文檔,今天對(duì)這些東西做一個(gè)總結(jié)。主要是以鏈接形式提供,并附上簡(jiǎn)短的說(shuō)明。歡迎加入和技術(shù)交流群,群聊號(hào)碼 寫在前面 之前做過(guò)一段時(shí)間的WebAssembly的研究,寫過(guò)幾個(gè)WebAssembly Demo,并且閱讀并翻譯了很多篇Emscripten官方文檔,今天對(duì)這些東西做一個(gè)總結(jié)。如果有需要對(duì)這塊知識(shí)了解的同學(xué),就可...
摘要:解析下載后,需要引擎經(jīng)過(guò)兩個(gè)階段轉(zhuǎn)換成,然后再轉(zhuǎn)換為瀏覽器需要的中間字節(jié)碼。未來(lái)所有支持編譯到字節(jié)碼的編程語(yǔ)言,理論上都可以輸出。 了解WebAssembly原理 WebAssembly是一種可以在瀏覽器上運(yùn)行的二進(jìn)制可執(zhí)行格式文件。它將成為瀏覽器進(jìn)化史上又一次革命。 自從瀏覽器問(wèn)世以來(lái),javascript就成為瀏覽器上執(zhí)行程序的唯一標(biāo)準(zhǔn),越來(lái)越多的應(yīng)用程序通過(guò)javascript開...
摘要:本文以這個(gè)模塊的開發(fā)過(guò)程梳理如何應(yīng)用到前端工程中。注使用完成開發(fā)至少需要基礎(chǔ)的編碼能力。具體其他信息可以參考上該模塊的。配置主要針對(duì)源碼文件,需要添加正確的進(jìn)行處理。下一篇應(yīng)用到前端工程下和 前言 WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine...
摘要:歡迎加入和技術(shù)交流群,群聊號(hào)碼。下面是正文如果只是想要入門的話,使用是非常簡(jiǎn)單的。主要是通過(guò)來(lái)工作的。實(shí)際上,這塊區(qū)域不僅可以顯示文本。對(duì)于開發(fā)者來(lái)說(shuō),這是非常好的資源。 翻譯:云荒杯傾本文是Emscripten-WebAssembly專欄系列文章之一,更多文章請(qǐng)查看專欄。也可以去作者的博客閱讀文章。歡迎加入Wasm和emscripten技術(shù)交流群,群聊號(hào)碼:939206522。 下面...
閱讀 2721·2021-11-11 16:54
閱讀 2344·2021-10-09 09:44
閱讀 2570·2019-08-30 15:54
閱讀 1948·2019-08-30 11:24
閱讀 1191·2019-08-29 17:03
閱讀 2118·2019-08-29 16:22
閱讀 2098·2019-08-29 13:11
閱讀 1057·2019-08-29 12:14