Emscripten/NodeJS:使实际的文件系统默认可用

Posted

技术标签:

【中文标题】Emscripten/NodeJS:使实际的文件系统默认可用【英文标题】:Emscripten/NodeJS: Make the actual file-system available by default 【发布时间】:2019-02-12 13:19:05 【问题描述】:

我想用 Emscripten 编译一个 CLI 应用程序,并只利用本机文件系统层,以便应用程序可以执行它自己的测试套件。

我知道从技术上讲,我可以在程序的 main() 函数中使用正确的 EM_ASM 语句来做到这一点。但是,有没有办法告诉 Emscripten 使其默认可用?我看到了一个建议 -s NODERAWFS=1 的 Github 问题,但它似乎不起作用 - 或者至少,正如预期的那样。

据我所知,我可以通过这些选项使本机文件系统对程序可用:

编辑main() 以获得EM_ASM 语句,该语句通过NODEFS 挂载根。 添加一个执行上述但从原始程序中减去的预脚本。

我需要根映射的原因是因为需要将路径传递给程序以允许程序找到它的测试套件。

对我如何实现这项工作有任何想法吗?

【问题讨论】:

【参考方案1】:

The source code (settings.js) 解释-s NODERAWFS=1 emcc 编译选项:

文件系统 API 将直接使用 Node.js API,无需 FS.mount()初始工作目录将与 process.cwd() 相同,而不是 VFS 根目录。

如果启用-s NODERAWFS=1,这听起来您可能需要使用./ 之类的相对路径而不是默认根/ 作为您的工作目录?

除此之外,settings.js 对 emcc 选项的描述比其官方文档最好。您可能想深入研究它。

【讨论】:

原来这个标志一直有效。但从表面上看,该程序无法扫描文件夹中的测试套件 - 然而,它可以正常运行单个文件。我将不得不对此进行更多研究-也许我实际上发现了一个错误,谁知道呢。感谢您的回答! 这听起来像github.com/emscripten-core/emscripten/issues/7487,opendir 和目录列表不适用于 NODERAWFS=1

以上是关于Emscripten/NodeJS:使实际的文件系统默认可用的主要内容,如果未能解决你的问题,请参考以下文章

请问在虚拟机里怎么选择硬盘类型?是sata或ide的,和我实际物理硬盘有关系么?

请问在虚拟机里怎么选择硬盘类型?是scsi或ide的,和我实际物理硬盘有关系么??

请问在虚拟机里怎么选择硬盘类型?是scsi或ide的,和我实际物理硬盘有关系么?

如?何?使?用?P?H?P?开?发?高?效?的?W?E?B?系?统

MT50高中曲线系集大成之双切线法

在 python 中使用 pass 语句作为使代码更具可读性的一种方式?有关系吗?