Closed
Description
Hi,
I'm getting these errors while compiling ffmpeg with emcc
wasm-ld: error: dist/lib/libavformat.a: archive has no index; run ranlib to add one
wasm-ld: error: dist/lib/libavcodec.a: archive has no index; run ranlib to add one
wasm-ld: error: dist/lib/libavutil.a: archive has no index; run ranlib to add one
wasm-ld: error: dist/lib/libswscale.a: archive has no index; run ranlib to add one
shared:ERROR: '/opt/h265player/emsdk/upstream/bin/wasm-ld -o /tmp/emscripten_temp_jCijDj/libffmpeg.wasm --allow-undefined --lto-O0 /tmp/emscripten_temp_jCijDj/decoder_0.o dist/lib/libavformat.a dist/lib/libavcodec.a dist/lib/libavutil.a -L/opt/h265player/emsdk/upstream/emscripten/system/local/lib dist/lib/libswscale.a -L/opt/h265player/emsdk/upstream/emscripten/system/lib -L/root/.emscripten_cache/wasm-obj /root/.emscripten_cache/wasm-obj/libc.a /root/.emscripten_cache/wasm-obj/libcompiler_rt.a /root/.emscripten_cache/wasm-obj/libc-wasm.a /root/.emscripten_cache/wasm-obj/libdlmalloc.a /root/.emscripten_cache/wasm-obj/libpthread_stub.a /root/.emscripten_cache/wasm-obj/libc_rt_wasm.a --import-memory --import-table -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr --export __wasm_call_ctors --export __data_end --export initDecoder --export uninitDecoder --export openDecoder --export closeDecoder --export sendData --export decodeOnePacket --export seekTo --export main --export malloc --export free --export setThrew --export __errno_location --export _get_tzname --export _get_daylight --export _get_timezone --export emscripten_builtin_memalign --export memalign --export emscripten_builtin_free --export _get_environ -z stack-size=5242880 --initial-memory=67108864 --no-entry --max-memory=67108864 --global-base=1024' failed (1)
Finished Build
(I see this error referenced in #9329 but i already set [--cc="emcc" --ar="emar"].)
The below is the build script
- build_decoder.sh
echo "Beginning Build:"
rm -r dist
mkdir -p dist
cd ../ffmpeg
make clean
emconfigure ./configure --cc="emcc" --cxx="em++" --ar="emar" --prefix=$(pwd)/../WasmVideoPlayer/dist --enable-cross-compile --target-os=none \
--arch=x86_32 --cpu=generic --enable-gpl --enable-version3 --disable-avdevice --disable-swresample --disable-postproc --disable-avfilter \
--disable-programs --disable-logging --disable-everything --enable-avformat --enable-decoder=hevc --enable-decoder=h264 --enable-decoder=aac \
--disable-ffplay --disable-ffprobe --disable-ffserver --disable-asm --disable-doc --disable-devices --disable-network --disable-hwaccels \
--disable-parsers --disable-bsfs --disable-debug --enable-protocol=file --enable-demuxer=mov --disable-indevs --disable-outdevs
make
make install
cd ../WasmVideoPlayer
./build_decoder_wasm.sh
2)build_decoder_wasm.sh
rm -rf libffmpeg.wasm libffmpeg.js
export TOTAL_MEMORY=67108864
export EXPORTED_FUNCTIONS="[ \
'_initDecoder', \
'_uninitDecoder', \
'_openDecoder', \
'_closeDecoder', \
'_sendData', \
'_decodeOnePacket', \
'_seekTo', \
'_main'
]"
echo "Running Emscripten..."
emcc decoder.c dist/lib/libavformat.a dist/lib/libavcodec.a dist/lib/libavutil.a dist/lib/libswscale.a \
-O3 \
-I "dist/include" \
-s WASM=1 \
-s TOTAL_MEMORY=${TOTAL_MEMORY} \
-s EXPORTED_FUNCTIONS="${EXPORTED_FUNCTIONS}" \
-s EXTRA_EXPORTED_RUNTIME_METHODS="['addFunction']" \
-s RESERVED_FUNCTION_POINTERS=14 \
-s FORCE_FILESYSTEM=1 \
-v \
-o libffmpeg.js
echo "Finished Build"