美文网首页
征服工具链-FFmpeg的编译(Windows 篇)

征服工具链-FFmpeg的编译(Windows 篇)

作者: __若只如初见 | 来源:发表于2020-07-02 14:11 被阅读0次

    注:参考自bilibili系列视频,征服工具链-FFmpeg的编译(Windows 篇),更详细的内容可以从视频获取https://www.bilibili.com/video/BV17i4y1G7WA

    下载

    官网下载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

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

    编译脚本:


    image.png

    相关文章

      网友评论

          本文标题:征服工具链-FFmpeg的编译(Windows 篇)

          本文链接:https://www.haomeiwen.com/subject/nnbbxktx.html