emsdk 相关命令
命令 | 参数 | 说明 | 备注 |
---|---|---|---|
emsdk | 帮助详情 | ||
emsdk help | help | 帮助详情 | |
emsdk --help | –help | 帮助详情 | |
emsdk list [–old][–uses] | –old --uses | c 查询 Emscripten SDK 和 工具 列表 | 1.–old 返回所有版本;2. --users 返回不同 sdk 和依赖的组成 |
emsdk update | 更新 sdk | git pull 等价 | |
emsdk update-tags | 更新 sdk | git pull 等价 | |
emsdk uninstall <tool/sdk name> | 安装 | ||
emsdk install <tool/sdk name> | 卸载 | ||
emsdk activate <tool/sdk name> | 设置当前 sdk |
emcc 相关命令
命令 | 参数 | 说明 | 备注 |
---|---|---|---|
emcc --help | 帮助详情 | ||
emcc -O0 | -O0 | 包含所有断言(默认模式))) | 快速 build |
-O1 | -O1 | 简单优化,会移除断言,优化而二进制编译 | |
-O2 | -O2 | 比01 模式 优化 javascript | 压缩 js |
-O3 | -O3 | 比02 模式 更多优化 js | 编译时间长,发布版使用 |
-Os | -Os | 比03 模式 额外的体积优化;影响运行效率 | 影响 wasm 和 js 性能 |
-Oz | -Oz | 比03s 模式 进一步体积优化 | (不清楚实际情况,要多小是小) 更多参考 Optimizing Code |
-s | -s OPTION[=VALUE] | JavaScript 代码生成的选项 | 两种方式 1.直接传参( -s RUNTIME_LINKED_LIBS="[‘liblib.so’]");2.json 文件(-s DEAD_FUNCTIONS=@/path/to/file);更多参考 settings.js |
-g | -g | 保留 debug 信息 | 等同于 -g3 |
-g0 | -g0 | 尽量保持代码的可调试性 | |
-g1 | -g1 | 保留空格 | |
-g2 | -g2 | 保留函数名 | |
-g3 | -g3 | 保留 debug 信息 | 等同 -g |
-g4 | -g4 | source map 模式 | |
–profiling | –profiling | 生成 js 时使用默认值,增加可读性 | -g2 模式下 |
–profiling-funcs | –profiling-funcs | 生成 js 时,保留原函数名 | -g2 模式下 |
–tracing | –tracing | 启用 Emscripten 的 tracing API | 参考文档 tracing API |
–emit-symbol-map | –emit-symbol-map | 保存压缩文件和源文件的 function Names 的映射文件 | 适用于 “-O2”及其已上;并且 q 没有 “-g” 设置时 |
–js-opts | –js-opts <level> | js 优化器;“0”:不使用优化;“1”:使用优化 | “-O<level>” 下不需要设置该项 |
–llvm-opts | –llvm-opts <level> | LLVM 优化器;“0”:不使用优化(-O0);“1”: (-O1);“2”: (-O2);“3”: (-O3) | “-O<level>” 下不需要设置该项 |
–llvm-lto | –llvm-lto <level> | link-time optimizations [0-3] | 不稳定,不推荐使用 |
–closure | –closure <level> | 闭包编译器 ;“0”:不使用优化;“1”:使用优化(JavaScript code;不包括 WebAssembly 或 asm.js);“2”:使用优化 all | 不稳定,不推荐使用 |
–pre-js | –pre-js <file> | 处理前置入文件 | |
–post-js | –post-js <file> | 处理后置入文件 | |
–embed-file | –embed-file <file> | 指定要嵌入生成的 JavaScript 中的文件(文件或文件夹)) | “–embed-file dir/file.dat” |
–preload-file | –preload-file <file> | 预加载文件 存储在 filename.data ;xxx.html 存储在 xxx.html 和 xxx.data | “–embed-file dir/file.dat” |
–exclude-file | –exclude-file <file> | embed-file preload-file排除文件 | |
–use-preload-plugins | –use-preload-plugins <name> | 加载插件 | |
–shell-file | –shell-file <path> | HTML 的模板文件 | |
–source-map-base | –source-map-base <base-url> | source map 根目录 | |
–js-transform | –js-transform <cmd> | 编译器会将修改的和未修改的 | |
–bind | –bind | 使用 bindings Api | 参考文档 bind API |
–ignore-dynamic-linkin | –ignore-dynamic-linkin | 忽视动态链接 | |
----js-library | –js-library <lib> | ||
-v | -v | 开启所有打印 | |
–cache | –cache | 依赖缓存 | |
–clear-cache | –clear-cache | 清除依赖缓存 | |
–clear-cache | –clear-cache | 清除依赖缓存 | |
–show-ports | –show-ports | 展示编译端口 | |
–save-bc PATH | ----save-bc PATH | … | |
–memory-init-file | –memory-init-file <level> | 生成一个内存初始化文 ;0:关闭 1:开启 | … |
-Wwarn-absolute-paths | -Wwarn-absolute-paths | 启用在“-I”和“-L”命令行指令中使用绝对路径的警告 | … |
–proxy-to-worker | –proxy-to-worker | 启用 work.js | … |
–emrun | –emrun | 启用 work.js | … |
参考文档 tracing API
参考文档 bind API
emcc 优化方案
https://emscripten.org/docs/optimizing/Optimizing-Code.html
https://cloud.tencent.com/developer/article/1695218