c - Emscripten/NodeJS:使实际的文件系统默认可用
问题描述
我想用 Emscripten 编译一个 CLI 应用程序,并且只利用本机文件系统层,以便应用程序可以执行它自己的测试套件。
我知道从技术上讲,我可以EM_ASM
通过程序main()
功能中的适当语句来做到这一点。但是,有没有办法告诉 Emscripten 在默认情况下使其可用?我看到了一个 Github 问题,它提出了建议-s NODERAWFS=1
,但它似乎不起作用——或者至少,正如预期的那样。
据我所知,我可以使用以下选项使本机文件系统对程序可用:
- 编辑
main()
有一个EM_ASM
通过NODEFS
. - 添加一个执行上述但从原始程序中减去的预脚本。
我需要根映射的原因是需要将路径传递给程序以允许程序找到它的测试套件。
关于如何使这项工作的任何想法?
解决方案
源代码 ( settings.js
)解释了-s NODERAWFS=1
emcc 编译选项:
文件系统 API 将直接使用 Node.js API,无需
FS.mount()
. 初始工作目录将与 process.cwd() 相同,而不是 VFS 根目录。
这听起来像你可能需要使用相对路径,而不是你的工作目录./
的默认根目录,如果你启用?/
-s NODERAWFS=1
除此之外,settings.js
关于 emcc 选项的描述比其官方文档最好。你可能想深入研究它。
推荐阅读
- r - 不同长度列表的直方图
- stata - Stata:组合和排序类别
- c# - Newtonsoft.Json.JsonReaderException:遇到意外的字符
- python - 使用特定键过滤带有字典列的 pandas DataFrame
- rust - 使用 Rust,您如何在发布到 crate.io 之前执行平台测试?
- kubernetes-custom-resources - 在 k8s 运算符中,如何将 CRD 规范中的唯一 metadata.name 链接到我的服务器生成的唯一对象 ID
- vhdl - 在 VHDL 中,如何打印当前实体/架构的当前层次结构路径?
- github - 如何跟踪我的分叉解决的所有上游问题
- r - 如何创建一个循环粘贴到R中循环迭代的末尾
- c# - 如何使用这个 CRC-32C C# 库?