C emscripten WASM: Hello World - PullRequest
       6

C emscripten WASM: Hello World

2 голосов
/ 25 января 2020

В течение последних нескольких месяцев я безуспешно пытался создать привет-мир веб-сборки. Я прочитал 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 и небольшим встроенным скриптом, который вызывает основную функцию, которая затем записывает hello world на консоль? Спасибо.

1 Ответ

1 голос
/ 29 января 2020

emcc -s MINIMAL_RUNTIME=1 создает небольшой вывод.

Чтобы изменить html, скопируйте emscripten/X.Y.Z/src/shell_minimal_runtime.html в myshell.html и используйте его в качестве пользовательской оболочки:

emcc tests/hello_world.c -o hello.html --shell-file myshell.html

Если вам нужна стандартная среда выполнения, emcc ... --shell-file .../emscripten/src/shell_minimal.html может работать.

...