尝试为 Windows 10 (x86_64) 静态编译 FFmpeg 4.2.3,但二进制文件要求缺少 DLL
Posted
技术标签:
【中文标题】尝试为 Windows 10 (x86_64) 静态编译 FFmpeg 4.2.3,但二进制文件要求缺少 DLL【英文标题】:Attempting to compile FFmpeg 4.2.3 statically for Windows 10 (x86_64), but binaries asks for missing DLLs 【发布时间】:2020-05-26 23:41:19 【问题描述】:我正在使用 Msys MinGW (x86_64) 并从他们的网站上提取了 FFmpeg 最新主要版本的快照。这是我的./configure
选项。我计划在我编译它的计算机和我拥有的其他 Windows 计算机上使用这些二进制文件。
./configure --enable-libaom --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --enable-libgme --enable-libmfx --enable-libkvazaar --enable-libmp3lame --enable-libilbc --enable-libvpx --enable-libmodplug --enable-version3 --enable-nonfree --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --enable-libfdk-aac --enable-libopenh264 --enable-libopenjpeg --enable-nvenc --enable-nvdec --enable-cuda --enable-cuvid --enable-libtwolame --enable-vapoursynth --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxavs2 --enable-gpl --enable-static --disable-shared
Output of configure script (pastebin)
uname -a
的输出(在 Msys 中)
MINGW64_NT-10.0-18362 <scrubbed> 3.1.4-340.x86_64 2020-05-22 08:28 UTC x86_64 Msys
我面临的问题是,尽管传递了选项--enable-static
和--disable-shared
,但生成的可执行文件仍然需要libchromaprint.dll
、libfdk-aac-2.dll
和libgme.dll
才能运行。我所期望的是 FFmpeg 将独立于任何 DLL 文件执行,因为我将这些选项传递给了./configure
。
【问题讨论】:
即使 ffmpeg 构建是正确的,您链接的一些所谓的静态库也可能不是。你能运行最后的链接命令吗? 【参考方案1】:即使您指定--enable-static
,共享库也可能在未找到静态库的情况下使用。在构建过程中,您应该会收到来自 libtool
的警告。
因此,如果它查找 libchromaprint.a
并且找不到它,它将与 libchromaprint.dll.a
链接,从而导致对 DLL 的依赖。
检查依赖关系以查看它们的静态库是否可用(在您的情况下为libchromaprint.a
、libfdk-aac-2.a
、libgme.a
)。
【讨论】:
我能够在 /mingw64/lib 下找到这些文件,但是,在那里也可以找到*.dll.a
文件(libgme 除外,它没有关联的 libgme.a)。我应该怎么做才能明确告诉./configure
去哪里看?
您可以尝试将LDFLAGS="-L/mingw64/lib"
添加到./configure
以确保它找到库。您还应该确保可以通过 PATH
环境变量找到 DLL。如果涉及 pkg-config,您可能还需要设置类似 PKG_CONFIG_PATH=<somepath>/lib/pkgconfig
以上是关于尝试为 Windows 10 (x86_64) 静态编译 FFmpeg 4.2.3,但二进制文件要求缺少 DLL的主要内容,如果未能解决你的问题,请参考以下文章
linux samba共享加入windows server 域
没有可用的二进制红宝石:osx/10.13/x86_64/ruby-2.2.3
在 ARM 上的 Windows 10 上检测 UWP 应用仿真
致命错误:Python.h:没有这样的文件或目录错误:命令“x86_64-linux-gnu-gcc”失败,退出状态为 1