为了账号安全,请及时绑定邮箱和手机立即绑定

Emscripten - 编译为 WASM 并在胶水代码中保留原始的可调用函数名称

Emscripten - 编译为 WASM 并在胶水代码中保留原始的可调用函数名称

胡子哥哥 2021-10-21 10:34:36
使用 Emscripten v 1.38.43,我正在编译 C 代码。出于优化的原因,我已经剥离了生成的 JS 粘合代码并最小化了代码大小。这样做时,我发现 JS 可调用对象的映射如下:var asmLibraryArg = {  "b": ___setErrNo,  "j": _emscripten_get_heap_size,  "i": _emscripten_memcpy_big,  "h": _emscripten_resize_heap,  "g": myFunctionA,  "f": myFunctionB,  "e": myFunctionC,  "d": myFunctionD,  "c": abortOnCannotGrowMemory,  "a": DYNAMICTOP_PTR};使我的剥离 JS 更难维护。在旧版本 (1.38.8) 上,它用于输出带有前缀 _ 的函数名称,即"_myFunctionA" : myFunctionA问:我可以给 emcc 编译器一个标志,强制它在生成的 JS 中保留我的原始函数名称吗?
查看完整描述

1 回答

?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

没有一个特定的标志来关闭它,但目前内部标志-s EMITTING_JS=0会这样做(如果它认为它没有发出 JS,它不会缩小涉及 JS 的东西)。然而,这个标志在未来可能会改变——我们正在研究更好的标志来控制这一切。

解决方法是使用较低的优化级别,因为这仅在-O3-Os及更高版本中完成。


查看完整回答
反对 回复 2021-10-21
  • 1 回答
  • 0 关注
  • 439 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信