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,

Итак, есть ли способ удалить основную функцию из библиотеки или установить какой-либо флаг для предотвращения генерации глобальной главной функции?

0 ответов

Другие вопросы по тегам