#ffmpeg #emscripten #cc
#ffmpeg #emscripten #cc
Вопрос:
Я хочу собрать ffmpeg.js , но я получаю следующую ошибку при запуске make all:
pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])
{shouldRunNow=false}Module["noExitRuntime"]=true;run();return
__ffmpegjs_return}module["exports"]=__ffmpegjs;
^^^^^^^^^^^^^^^
1 error(s), 6 warning(s)
shared:ERROR: closure compiler failed (rc: 1)
Makefile:316: recipe for target 'ffmpeg-webm.js' failed
make: *** [ffmpeg-webm.js] Error 1
Соответствующие строки в файле Makefile являются:
# Compile bitcode to JavaScript.
# NOTE(Kagami): Bump heap size to 64M, default 16M is not enough even
# for simple tests and 32M tends to run slower than 64M.
EMCC_COMMON_ARGS =
--closure 1
-s TOTAL_MEMORY=67108864
-s OUTLINING_LIMIT=20000
-O3 --memory-init-file 0
--pre-js $(PRE_JS)
-o $@
ffmpeg-webm.js: $(FFMPEG_WEBM_BC) $(PRE_JS) $(POST_JS_SYNC)
emcc $(FFMPEG_WEBM_BC) $(WEBM_SHARED_DEPS) --------->>>>> THIS IS LINE 316
--post-js $(POST_JS_SYNC)
$(EMCC_COMMON_ARGS)
Как я могу построить ffmpeg.js с emcc правильно?
Ответ №1:
Это говорит о сбое компилятора закрытия. Удалить --closure 1
. Вероятно, вам нужно уменьшить флаг оптимизации до -O2
для компиляции. Как вы можете видеть, по моему опыту, оптимизаторы Emscripten имеют некоторые ошибки в коде модуляции JS.
Всегда полезно попробовать скомпилировать что-либо без каких-либо флагов оптимизации, а затем постепенно включать их.