windows环境下编译x.264

一:准备

  1. msys2:提供了一个gnu工具链的运行运行环境,而且有pacman包管理器,可以满足绝大多数linux应用,linux能用啥,window(大部分,有些posix api window不支持)也行,完全可以替代cmd了
    如果使用官方网站下载,速度非常慢。可以使用中科大镜像源来下载。下载连接为:点击下载。我下载的版本是(msys2-x86_64-20190524.exe )
  2. Yasm:Yasm是一个完全重写的NASM汇编。它支持x86和AMD64指令集。 链接:点击下载,在windows环境下我下载的是Win64 .exe (for general use on 64-bit Windows)版本
  3. VS2015
  4. 下载X.264源码:这里有两种下载方式
    (1)点击下载
    可以在官网下载各种版本
    (2)git clone http://git.videolan.org/git/x264.git

二:安装和配置环境

  1. 安装msys2
    安装步骤就很简单,我安装的位置是F:\msys64。
    MSYS2安装完成后有三个shell环境来选择编译
    windows环境下编译x.264_第1张图片
    在这里我选择使用mingw64.exe来编译,因为在msys下使用gcc编译出来的exe和dll依赖msys-2.0.dll,而mingw64下编译出来的文件不需要依赖这个dll,从程序的运行效率来看,不依赖这个dll的程序的效率应该更高
  2. 配置msys2
    (1)安装完成后进入安装软件路径,找到msys2_shell.cmd,对其编辑
    将注释掉的rem set MSYS2_PATH_TYPE=inherit改成set MSYS2_PATH_TYPE=inherit,这是为了将vs的环境继承给MSYS2。如图
    windows环境下编译x.264_第2张图片windows环境下编译x.264_第3张图片
    (2)修改pacman的源
    pacman是一个软件包管理器,用来在MSYS2中安装软件。默认使用的是国外的源,下载速度不忍直视,还容易下载出错。所以这里要修改使用国内的中科大的源。
    路径为:F:\msys64\etc\pacman.d下的三个文件
    windows环境下编译x.264_第4张图片
    参考msys2镜像使用帮助提示修改
    编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:
    Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686
    编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:
    Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64
    编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:
    Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch
    然后执行 pacman -Sy 刷新软件包数据即可。
    (3)重命名link.exe
    路径为F:\msys64\usr\bin下的link.exe将其修改为link.bak。这是为了避免和MSVC 的link.exe冲突
    (4)配置yasm
    将下载好的yasm重名为yasm.exe,移动到或复制一份到F:\msys64\usr\bin中去
    windows环境下编译x.264_第5张图片
    (5)安装GCC和make
    我使用的是mingw来编译,所以打开mingw64.exe,在shell窗口中输入:
    pacman -S mingw-w64-x86_64-toolchain

我在编译x.264这一步时,提示我找不到make命令。想了下是没有装make这个工具,然后就重新装了,最后编译成功。后来想了一下,估计是开始在配置环境的时候就没有装,所以在配置的时候所有的东西要一步到位。
同样是在shll窗口中输入:
pacman -S make
(6) 安装nasm
在编译最新的x.264时需要用到它
同样:
pacman -S nasm
(7)将下载好的x264移动到F:\msys64\home
windows环境下编译x.264_第6张图片
到此,环境基本配置完成。

三:编译

1:打开[适用于 VS 2015 的 x64 本机工具命令提示]关联的mingw64

[开始菜单中的Visual Studio 2015目录下有多种命令提示符的快捷方式,选择适用于 VS 2015 的 x64 本机工具命令提示],在窗口中输入:
F:
cd msys64
msys2_shell.cmd -mingw64
从vs2015的shell打开msys2 shell是为了继承vs2015的环境路径。
2:检查编译环境工具
在打开的mingw64的shell窗口输入:
which cl link yasm cpp
看返回结果:
windows环境下编译x.264_第7张图片
如果返回上图,就说明没有问题

3:cd进入存放x264的文件中windows环境下编译x.264_第8张图片
然后依次输入

(1)./configure --prefix=…/build --host=x86_64-w64-mingw32 --enable-shared --disable-thread --disable-avs --extra-ldflags=-Wl,–output-def=libx264.def
(2)make
(3)make install
4:生成libx264.lib
由于上面编译出来的结果没有包含lib文件,需要手动生成。使用configure时我们生成了libx264.def。在shell窗口中输入:
cp ./libx264.def …/build/lib/
cd …/build/lib
#生成64位lib文件,输入一下命令:
lib /machine:X64 /def:libx264.def

即可得到libx264.lib,将F:\msys64\home\build\bin中的libx264-157.dll和x264.exe,还有F:\msys64\home\build\include中的.h头文件一起整理到一个新的文件中去,就可以在vs2015中使用了,具体使用方法见我上一篇博客
传送门

四:最后

我将自己的编译完成后的x264分享在此,需要的自取
1:百度云盘
提取码:6fa6
传送门
2:github
传送门

你可能感兴趣的:(图像处理,git)