Компиляция модуля Wasm с уровнями оптимизации 02 и 03 для загрузки в AudioWorlet?
Я пытаюсь скомпилировать.wasmmodule.js с дополнительной оптимизацией для работы в AudioWorklet.
Я использую файл.post.js для добавления "модуля экспорта по умолчанию" к скомпилированному Wasm, используя флаг компиляции --post-js. Это хорошо работает с оптимизацией 01, которая является текущей конфигурацией компиляции, используемой в примерах шаблонов проектирования рабочихлетов.
$(EMSCR) $(CFLAGS) --post-js $(POST_JS) -o $(OUTPUT) $(SRC_EM) $(SRC)
CFLAGS=--bind -O1\
-s WASM=1 \
-s BINARYEN_ASYNC_COMPILATION=0 \
-s SINGLE_FILE=1 \
-s ALLOW_MEMORY_GROWTH=1 \
-s ABORTING_MALLOC=0 \
-s TOTAL_MEMORY=128Mb
У меня возникают проблемы с компиляцией с флагами оптимизации 02 и 03, потому что мне нужно загрузить Wasm с экспортом по умолчанию.
Если я прокомментирую экспорт --post.js, компиляция отлично работает с уровнем оптимизации 02 или 03. Однако тогда мы не сможем загрузить Wasm в рабочий лист, за исключением:
Например, "Ошибка при загрузке рабочеголета: SyntaxError: запрошенный модуль '../../build/m.wasmmodule.js' не предоставляет экспорт с именем 'default
Я пробовал разные комбинации, но не смог с этим справиться.
Есть идеи, есть ли другая конфигурация, которую я мог бы попробовать?
Большое спасибо
2 ответа
Если вы используете синтаксис ESM JavaScript import MyModule from './MyModule.js'
попробуйте использовать эти флаги Emscripten:
-s EXPORT_ES6=1 \
-s MODULARIZE=1 \
У меня была такая же проблема, и я исправил ее, используя
--extern-post-js
вместо
--post-js
, который добавляет экспорт после завершения всей остальной работы компилятора, включая оптимизацию.