首页 > 其他分享 >FFmpeg-FFmpeg编译时静态链接libwinpthread

FFmpeg-FFmpeg编译时静态链接libwinpthread

时间:2022-08-24 11:24:45浏览次数:102  
标签:enable FFmpeg libwinpthread -- 编译 ffmpeg

FFmpeg-FFmpeg编译时静态链接libwinpthread

需求是在Windows下编译ffmpeg的可执行档ffmpeg.exe, ffmpeg.exe倒是编译出来了,但是运行时总是报错:

image-20220824105843107

后来搜了一下,是缺少libwinpthread-1.dll 这个库文件,只要把libwinpthread-1.dll 这个文件和ffmpeg.exe这个文件放在一起程序就能正常运行,试了一下,果然如此,

可问题是我不想同时提供这两个文件给别人,所以在想有没有什么办法能把这个动态库打到ffmpeg.exe这个文件里面,这样将来给别人时只要提供ffmpeg.exe这个文件就好了。

尝试了很多次之后,发现了解法,只需要在链接器参数后面加上 -Wl,-Bstatic -lpthread 参数即可。

编译脚本如下:

./configure --prefix=./windows --disable-everything --enable-ffmpeg --enable-protocol=file --enable-demuxer=wav --enable-decoder=pcm* --enable-encoder=aac --enable-muxer=adts --enable-filter=aresample --disable-autodetect --disable-avdevice --disable-swscale  --extra-ldflags='-Wl,-Bstatic -lpthread'

注:我是在Windows下使用MinGW64来编译FFmpeg的

-Wl,-Bstatic

指定后续ld在处理 -l 参数来链接库文件的链接方式首选静态库

-Wl,-Bdynamic

指定后续ld在处理 -l 参数来链接库文件的链接方式首选动态库

例如: -Wl,-Bstatic -la -lb -lc -Wl,-Bdynamic -ld -l e

会被解释成 :ld liba.a libb.a libc.a libd.so libe.so

试了一下,这样即使没有 libwinpthread-1.dll ffmpeg.exe 也能运行成功:

image-20220824110648296

转码也没有问题。

参考链接:

  1. 一次Windows下FFmpeg的编译尝试
  2. how to do static linking of libwinpthread-1.dll in mingw?

标签:enable,FFmpeg,libwinpthread,--,编译,ffmpeg
From: https://www.cnblogs.com/yongdaimi/p/16619204.html

相关文章

  • Qt的编译路径设置
    在qtCreator的构建概要中有一个shadowbuild的勾选框,默认是勾选的,此时构建目录是可以修改的。而如果把勾选去掉,则构建目录自动变为项目的目录,且不能够修改。1.不勾选shad......
  • 源码编译安装 git
    1、下载解压git源代码curl-Ohttps://mirrors.edge.kernel.org/pub/software/scm/git/git-2.37.2.tar.gztar-xvfgit-2.37.2.tar.gzcdgit-2.37.22、安装依赖包......
  • 前端编译报Error: Cannot find module 'node-sass'
    解决办法:1.在项目目录cmd下运行:npm install -g cnpm --registry=https://registry.npm.taobao.org2.下载成功后再运行:cnpm install node-sass3、两个都下载成......
  • 【mac】brew安装ffmpeg
    1、安装brewinstallffmpeg 2、过程%brewinstallffmpegHOMEBREW_BREW_GIT_REMOTEset:usinghttps://mirrors.ustc.edu.cn/brew.gitforHomebrew/brewGit......
  • NotificationService.appex编译报错
    报错:Buildinputfilecannotbefound:'.../Build/Products/Debug-iphoneos/NotificationService.appex/NotificationService' 解决的办法:1、选择扩展Targets-Bui......
  • GammaRay源码编译mingw32版本运行文件
    1,目标GammaRay是一个允许你查看Qt应用程序甚至在某种程度上修改它的独特应用,GammaRay可以在运行时实时观察程序中的qt代码的行为和数据结构,可谓是Debugger的良好......
  • rk3566 linux编译运行librga C++程序
    本文使用的是linuxaarch64版librga.so(1.3.2),来自https://github.com/airockchip/librga 运行环境:rk3566linux系统编译环境:ubuntu20.04gcc/g++9.4工具链:gcc-buildroot......
  • 新建了个Java类,启动后报编译错误:Error:(1, 1) java: 非法字符: '\ufeff' Error:(1, 1
    【问题】Error:(1,1)java:非法字符:'\ufeff'Error:(1,10)java:需要class,interface或enum  【原因】编译问题因为程序编译时是按照UTF-8的格式来编译运行,......
  • VASP编译安装
    下载安装InteloneAPIToolkits(依次在同一个目录安装Basetoolkit及HPCtoolkit),注意下载链接版本#安装BaseToolkitwgethttps://registrationcenter-download.intel......
  • gcc编译器
    一、gcc,即GNUCCompile  gcc仅仅是一个编译器,没有界面,必须在命令行模式下使用。通过gcc命令可以将源文件编译成可执行文件。  gcc既可以一次性完成C语言源文件......