Emscripten компилирует несколько основных функций
Я пытался скомпилировать FFmpeg, используя Emscripten для экспорта в код WebAssembly. Я использовал Makefile ffmpeg.js здесь с очень небольшими изменениями. Компиляция работает нормально без каких-либо ошибок, и генерирует ffmpeg.bc, однако, если я пытаюсь скомпилировать файл вместе с другим файлом C, содержащим main
Функция Я получаю ошибку
error: Linking globals named ´main´: symbol multiply defined!
ERROR:root:Failed to run llvm optimizations:
Я использую команду:
ffmpeg-wasm.js: (FFMPEG_MP4_BC)
emcc test.c $(FFMPEG_MP4_BC) $(MP4_SHARED_DEPS) $(EMCC_COMMON_ARGS)
где
EMCC_COMMON_ARGS = \
-s TOTAL_MEMORY=67108864 \
-s OUTLINING_LIMIT=20000 \
-O3 --memory-init-file 0 \
-o $@ \
-s WASM=1 \
-I/usr/local/include
Я попытался использовать другой снимок ffmpeg, который не решил проблему.
Если я бегу
llvm-nm $(find . -name *.so) > log.txt && grep -n ./log.txt -e "int main"
чтобы проверить, если какая-либо из зависимостей содержит main, я ничего не получаю, однако в сгенерированной есть глобальная функция main ffmpeg.bc
,
Итак, есть ли способ удалить основную функцию из библиотеки или установить какой-либо флаг для предотвращения генерации глобальной главной функции?