一、编译器的区别
1. 编译器的选择(clang)
- C用clang
- C++用clang++
- bc用emcc(Emscript)
2. 编译命令行
- c: clang test.c header.c -o name.exe
- c++: clang++ test.cpp header.cpp -o(output) name.exe
- bc: emcc --bind test.bc -o test.js (--bind启用bingdings编译源代码,bindings是Emscripten中链接C++和JavaScript代码的一类API)
二、wasm和emcc和bc格式文件联系
1.emcc(一种编译器)
emcc就是Emscripten的编译器,将c文件编译产出生成xx.wasm
emcc test.c -Os -s WASM=1 -s SIDE_MODULE=1 -o test.wasm
emcc就是Emscripten编译器;test.c是我们的输入文件;-Os表示这次编译需要优化;-s WASM=1表示输出wasm的文件,因为默认的是输出asm.js;-s SIDE_MODULE=1表示就只要这一个模块,不要给我其他乱七八糟的代码;-o test.wasm是我们的输出文件。
编译成功之后,当前目录下就会生成test.wasm
Emscripten将llvm的中间语言转换成node代码(test.wa