c - C emscripten WASM:Hello World
问题描述
在过去的几个月里,我尝试创建一个 Web 程序集 hello world,但没有成功。我已经阅读了 7 个教程,观看了 4 个 YouTube 视频,并阅读了大量关于 WASM 和 emscripten 的文档。出于这个问题的目的,我将专注于emscripten 文档教程,因为希望大多数人都熟悉它。根据教程,我有:
hello_world.c
#include <stdio.h>
int main() {
printf("hello world\n");
return 0;
}
编译:
./emcc tests/hello_world.c
并成功测试
node a.out.js
我还生成了一个 html 输出:
./emcc tests/hello_world.c -o hello.html
并且(如果我使用 Python 服务)这已在浏览器中成功测试。
在这一点上,本教程似乎认为它已经完成,并转向更高级的主题,如文件处理。但这不可能是正确的:生成的 html 长度超过 1000 行,显然会导致数百个副作用(预期的行为只是一个空白页面,如果您检查元素,应该显示一个控制台日志“hello world”。但是这个 html 文件呈现一个完整的网页)。
我想要一个 hello world 示例的原因是为了测试 wasm 是否正常工作,然后能够开始修改和扩展示例。如果我想修改这个网页,我不知道从这个庞大的 HTML 文件的哪里开始。
编辑:也许我应该补充一下,我知道还生成了一个大的 js '胶水代码'文件。如果有办法钩入胶水,我对此很满意。我目前不知道这个 html 或其中的脚本如何与 js 胶水交互。
所以我的问题是,我需要做什么才能拥有一个包含几行 html 的 HTML 文件和一个调用 main 函数的小内联脚本,然后将 hello world 记录到控制台?谢谢你。
解决方案
emcc -s MINIMAL_RUNTIME=1
产生小的输出。
要修改 html,请将其复制emscripten/X.Y.Z/src/shell_minimal_runtime.html
到myshell.html
并用作自定义 shell:
emcc tests/hello_world.c -o hello.html --shell-file myshell.html
如果您需要标准运行时,emcc ... --shell-file .../emscripten/src/shell_minimal.html
可能会工作。
推荐阅读
- python - 如何解决问题:docker 中的错误 yandex pymystem3?
- vue.js - VueJS PSPDFKit 集成
- java - 通过 Apache Flink 读取具有数字列(如 -10.0、-9.9、+9.9 等)的文本文件
- android - RxAndroidBle - writeCharacterstics 在 android naugat 中失败
- apache-pulsar - 带有 bookie 端口的 Apache Pulsar 独立模式 - 不选择
- java - 从 Java InputStream 读取 31 位整数
- node.js - Heroku 部署期间 prisma 出现 ERR_INVALID_ARG_TYPE 错误
- r - 在搜索 nsga2R 的过程中如何保持一些变量不变?
- php - 如何重定向到特定的 URL?
- python - 具有图形社区的散景可视化