компиляция mfw ffmpeg 8192 предельных значения - PullRequest
0 голосов
/ 19 декабря 2018

Я пытаюсь скомпилировать ffmpeg, совместно используемый с mingw64 в Windows 10. Вот команда configure:

./configure --arch=x86_64 --enable-shared --disable-static --prefix=/e/Downloads/ffmpeg-dyn/

Все выглядит хорошо.Затем я делаю:

mingw32-make.exe -j16

Но я сталкиваюсь с этой ошибкой:

LD      libswresample/swresample-3.dll
LD      libswscale/swscale-5.dll
dlltool -m i386:x86-64 -d libswresample/swresample-3.def -l libswresample/swresample.lib -D swresample-3.dll
dlltool -m i386:x86-64 -d libswscale/swscale-5.def -l libswscale/swscale.lib -D swscale-5.dll
STRIP   libavcodec/x86/vp9itxfm.o
GEN     libavcodec/libavcodec.ver
EXTERN_PREFIX="" AR="ar" NM="nm -g" ./compat/windows/makedef libavcodec/libavcodec.ver libavcodec/012v.o libavcodec/4xm.o libavcodec/8bps.o libavcodec/8svx.o libavcodec/a64multienc.o 
... // SKIP all .o files for stackoverflow
libavcodec/y41pdec.o libavcodec/y41penc.o libavcodec/ylc.o libavcodec/yop.o libavcodec/yuv4dec.o libavcodec/yuv4enc.o libavcodec/zerocodec.o libavcodec/zmbv.o libavcodec/zmbvenc.o > libavcodec/avcodec-58.def
Object does not exist: lib
mingw32-make: *** [ffbuild/library.mak:102: libavcodec/avcodec-58.dll] Error 1

Как вы можете видеть, Object не существует: lib ничего не значит.После некоторых исследований это выглядит так, как будто cmd.exe ограничивает 8129 символов для параметров.Я попытался установить другое значение ComSpec, но безуспешно.Я также попытался внести некоторые изменения в library.mak, используя файл, содержащий файлы * .o, но у меня возникает много ошибок.

Похоже, это известная проблема, но я не пробовал ничего сделать: https://trac.ffmpeg.org/ticket/6620

Какие-нибудь советы, чтобы это исправить?

1 Ответ

0 голосов
/ 24 декабря 2018

Спасибо Карлу Ойгену из списка рассылки ffmpeg-user.

Я изменил строку library.mak 51

$(SUBDIR)$(SLIBNAME_WITH_MAJOR): $(OBJS) $(SLIBOBJS) $(SUBDIR)lib$(NAME).ver
EXTERN_PREFIX="$(EXTERN_PREFIX)" AR="$(AR_CMD)" NM="$(NM_CMD)" $(SRC_PATH)/compat/windows/makedef $(SUBDIR)lib$(NAME).ver $(SUBDIR)*.o > $$(@:$(SLIBSUF)=.def)
$$(LD) $(SHFLAGS) $(LDFLAGS) $(LDSOFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS)
$(SLIB_EXTRA_CMD)

И для каждой проблемы dll используйте это:

$ mingw32-make.exe V=1 libavcodec/avcodec-58.dll

описание: mingw32-make.exe V = 1 subdirlib / libname.dll

Полное обсуждение с Карлом Евгением доступно здесь: https://www.mail-archive.com/ffmpeg-user@ffmpeg.орг / msg19801.html

...