общий: ОШИБКА: сбой компилятора закрытия (rc: 1)

#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.

Всегда полезно попробовать скомпилировать что-либо без каких-либо флагов оптимизации, а затем постепенно включать их.