【发布时间】:2016-07-28 15:56:19
【问题描述】:
我正在将一些 C++ 代码编译为 emscripten。我注意到 emscripten 包含一大段代码来支持文件系统操作。根据 emscripten 的文档,包含此代码是因为编译后的 C++ 调用 I/O 函数。否则,它就不会在那里。这是文档的相关部分:
Emscripten 决定是否包含文件系统支持 自动地。许多程序不需要文件,并且文件系统支持 大小不可忽略,因此 Emscripten 避免在 没有理由这样做。这意味着如果您的 C/C++ 代码没有 访问文件,则 FS 对象和其他文件系统 API 将不会 包含在输出中。另一方面,如果您的 C/C++ 代码 确实使用文件,然后文件系统支持将自动 包括。所以通常事情会“正常工作”,你不需要 考虑一下。
我正在编译的代码不应该做 I/O,我想优化编译后的 javascript 的大小。我努力删除了所有 I/O 代码,但一定有一些东西需要 FS 支持。
是否有一种简单的方法可以跟踪我的代码中需要 FS 支持的内容?
【问题讨论】:
-
在代码库中搜索
ifstream和ofstream? -
我已经这样做了。我很确定代码中没有 C++ 流。我还定义了 NDEBUG 来禁用断言的输出。似乎在某处仍有对 stdout 标准输入或标准错误的引用。
标签: javascript c++ emscripten