影子叩

搜索
夜间模式◐

征服工具链-FFmpeg的编译(Windows 篇)
[工作效率] · summer · 发布于 · 2020-07-02 · 431 次点击 · 复制地址

倔强青铜Ⅱ   summer  · 2020-07-02 16:44:22 · 显示全部楼层 · 阅读
下载

官网下载msys2, ffmpeg,x264
Autoconf

Autoconf是M4宏处理器的扩展包,用于生成自动构建源码包的脚本。 适用于多种UNIX-like系统。可以使软件包在所有的UNIX-like系统上进行编译。

    注:M4 是一个宏处理器.将输入拷贝到输出,同时将宏展开. 宏可以是内嵌的也可以是用户定义的. 除了可以展开宏,m4还有一些内建的函数,用来引用文件,执行Unix命令,整数运算,文本操作,循环等. m4既可以作为编译器的前端也可以单独作为一个宏处理器.

ffmpeg、x264等岁数较大的软件,都用Autoconf构建。既然生成的脚本构建源码的脚本是在UNIX-like系统上进行编译的,那么我们在windows上编译软件就会很困难,解决方法是,msys2,它可以在windows上模拟一个UNIX-like系统。
为了解决Autoconf的跨平台缺陷,cmake诞生。
MSYS2

MSYS2 (Minimal SYStem 2)主要用于 shell 命令行开发环境。是集成了pacman(包管理工具)和Mingw-w64的Cygwin升级版(Cygwin是一个在windows平台上运行的类UNIX模拟环境), 提供了bash shell等linux环境、版本控制软件(git/hg)和MinGW-w64 工具链。
MSYS2把UNIX-like系统函数转换成 Windows 的 API ,从而实现在windows上执行linux脚本。
安装MSYS2之后,还需要在MSYS2里手动安装Mingw-w64
MinGw 和 cygwin

操作系统提供的系统API是不同的,如Windows使用CreateProcess()创建进程,而Linux使用fork()。所以想要在Windows环境下使用Linux的编译工具,也就是gcc/g++,我们需要一个中间的转换工具或者平台,这也就是MinGW和cygwin存在的原因。
MinGW 是让Windows 用户可以用上GNU 工具,比如GCC,用于编译。
Cygwin 提供完整的类Unix 环境,Windows 用户不仅可以使用GNU 工具,理论上Linux 上的程序只要用Cygwin 重新编译,就可以在Windows 上运行。
即cygwin提供在windows平台上运行的类UNIX模拟环境,MinGw是在windows上使用gcc编译器,提供编译功能。
gcc的输入是源文件,输出是静态库/动态库/可执行文件。
编译x264 和 FFmpeg

编译库时,如果有依赖,且依赖所在目录既有动态库,又有静态库,他会优先选择动态库。静态库,代码会嵌入被依赖库;动态库,在最后运行时,需要把动态库放在运行目录用于引用。
代码量小的习惯生成静态库,代码量大的习惯生成动态库。

编译脚本:
14856373-2a721b8f1ce10b90.png


免责声明:
影子论坛所发布的一切内容仅限用于学习和研究目的,请勿用于商业或者非法用途,否则一切后果由用户自负。
请支持正版得到更好的正版服务。如有侵权请邮件与我们联系处理。Mail To:swatxhim@outlook.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表