标签:enable FFmpeg libwinpthread -- Wl 编译 ffmpeg
FFmpeg-FFmpeg编译时静态链接libwinpthread
需求是在Windows下编译ffmpeg的可执行档ffmpeg.exe, ffmpeg.exe倒是编译出来了,但是运行时总是报错:
后来搜了一下,是缺少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 也能运行成功:
转码也没有问题。
参考链接:
标签:enable,FFmpeg,libwinpthread,--,Wl,编译,ffmpeg 来源: https://www.cnblogs.com/yongdaimi/p/16619204.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。