使用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中吗?
答案 0 :(得分:1)
没有特定的标志可以将其关闭,但是当前内部标志-s EMITTING_JS=0
可以做到这一点(如果它认为它没有发出JS,则不会缩小涉及JS的内容)。但是,此标志将来可能会更改-我们正在研究更好的标志来控制所有这些情况。
一种解决方法是使用较低的优化级别,因为这只能在-O3
,-Os
及更高版本中完成。