Как статически скомпилировать ffmpeg для Windows в среде MSYS2? - PullRequest
0 голосов
/ 13 января 2019

Я хочу создать автономные статически связанные двоичные файлы ffmpeg для Windows из официального исходного кода git с помощью инструментов среды MSYS2. Но каждый раз, когда я получаю файл .exe, динамически связанный с библиотеками mingw, который вылетает с ошибкой «Не удалось правильно запустить приложение (0xc000007b)», даже если я установил требуемые libbz2-1.dll, libiconv-2.dll и libwinpthread-1. библиотеки DLL в его папке.

Я использую среду MSYS2 с

msys2_shell.cmd -mingw64

line и используйте пакет компилятора mingw64 / mingw-w64-x86_64-gcc 8.2.1 + 20181214-1. Затем я запускаю ./configure с

./configure --pkg-config-flags=--static --disable-shared --enable-static
Линия

- лучшие варианты, которые я нашел во всех моих попытках. Затем перейдите к общему

make
make install

последовательность.

В результате я получаю двоичные файлы, которые работают гладко в самой среде MSYS2, но когда я запускаю его из проводника Windows или cmd, сначала он запрашивает libbz2-1.dll, libiconv-2.dll и libwinpthread- 1.dll библиотеки, и когда я помещаю их в папку с двоичными файлами, они вылетают с ошибкой «Не удалось правильно запустить приложение (0xc000007b)».

Я спрашивал об этом случае на официальном форуме https://ffmpeg.zeranoe.com/forum/viewtopic.php?f=5&t=6439, но до сих пор не получил ответа в течение 5 дней.

Что касается динамического связывания библиотек, то я получил решение по удалению файлов * .dll.a из папки mingw64 \ x86_64-w64-mingw32 \ lib. Но это выглядит не очень чисто для меня. Я хотел бы знать, возможно ли статическое связывание с некоторыми параметрами компилятора / make / linker или с редактированием файлов ./configure или Makefile каким-либо образом?

Также ошибка 0xc000007b все еще сохраняется.

Мне удалось получить желаемый результат с media-autobuild_suite, основанным на той же среде MSYS2, поэтому я знаю, что это можно сделать как-нибудь. Но я очень новичок во всех этих вещах * nix, поэтому вообще не понимаю, что это за сценарий bash, не говоря уже о том, что он довольно сложный сам по себе. Единственное, что я вижу, это создание правильных исполняемых файлов ffmpeg, работающих в собственной среде Windows, не требующих dll, перечисленных выше.

Согласно всем руководствам в Интернете, которые я нашел на данный момент, я должен получить автономные исполняемые файлы Windows с этим набором инструментов, но он просто не работает, и я застрял. Пожалуйста, помогите.

...