1、环境
- Windows 10(1803)
- Visual Studio 2017(VC ++ 2015.3 v140桌面工具集(x86,x64))
- MSYS2(GNU构建环境)
- YASM(x86汇编代码编译器)
- gas-preprocessor.pl(ARM组件预处理器)
2、操作步骤
2.1、安装Visual Studio 2017
选择【安装VC ++ 2015.3 v140桌面工具集(x86,x64)】,如下图
)
2.2、安装MSYS2
-
下载地址:http://www.msys2.org/
-
32位Windows安装msys2-i686,64位Windows安装msys2-x86_64。
我用的是64位。 -
修改MSYS2目录下msys2_shell.cmd中rem set MSYS2_PATH_TYPE=inherit为set MSYS2_PATH_TYPE=inherit
-
在MSYS2命令窗口获取最新版本make,命令如下:
pacman -S make
- 在MSYS2命令窗口获取最新版本gcc,命令如下:
pacman -S gcc
- 移除或重命名msys2(\usr\bin\link.exe)中link.exe
- 在MSYS2命令窗口安装perl,命令如下:
pacman -S perl
- 在MSYS2命令窗口安装diffutils
pacman -S diffutils
- 修改msys2窗口Text属性为GBK,避免编译时显示乱码
在窗口上右击鼠标,选择[Options]菜单,选择[Text],locale选择:zh_CN,Character set 选择 GBK。
2.3、安装YASM
- 下载地址:http://yasm.tortall.net/Download.html
我用的是Win64.exe。下载后,将下载的yasm-1.3.0-win64.exe改名为yasm.exe,并放置于MSYS2 安装目录中。
2.4、安装gas-preprocessor
- 下载地址:https://github.com/FFmpeg/gas-preprocessor
- 将下载的gas-preprocessor.pl并放置于msys2安装目录下\usr\bin\中
2.5、验证工具
-
运行【VS2015 x86 ARM 兼容工具命令提示符】
-
在命令行窗口运行【C:\msys64\msys2_shell.cmd】
-
验证
$ which cl /c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/x86_ARM/cl $ which link /c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/x86_ARM/link $ which armasm /c/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/x86_ARM/armasm $ which yasm /usr/bin/yasm $ which cpp /usr/bin/cpp $ which gas-preprocessor.pl /usr/bin/gas-preprocessor.pl
2.6、下载ffmpeg3.4.2
#获取代码
git clone https://git.ffmpeg.org/ffmpeg.git
#切换分支
git checkout -b release3.4.2 n3.4.2
2.7、Windows 10 x86
- 运行【VS2015 x86 本机工具命令提示符】
- 在命令行窗口运行【C:\msys64\msys2_shell.cmd】
- 进入ffmpeg目录
cd /e/test/ffmpeg
-
在msys2命令行执行如下命令:
mkdir -p Output/Windows10/x86 cd Output/Windows10/x86 ../../../configure \ --toolchain=msvc \ --disable-programs \ --disable-d3d11va \ --disable-dxva2 \ --arch=x86 \ --enable-shared \ --enable-cross-compile \ --target-os=win32 \ --extra-cflags="-MD -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WIN32_WINNT=0x0A00" \ --extra-ldflags="-APPCONTAINER WindowsApp.lib" \ --prefix=../../../Build/Windows10/x86 make make install
2.8、Windows 10 x64
- 运行【VS2015 x64 本机工具命令提示符】
- 在命令行窗口运行【C:\msys64\msys2_shell.cmd】
- 进入ffmpeg目录
cd /e/test/ffmpeg
-
在msys2命令行执行如下命令:
mkdir -p Output/Windows10/x64 cd Output/Windows10/x64 ../../../configure \ --toolchain=msvc \ --disable-programs \ --disable-d3d11va \ --disable-dxva2 \ --arch=x86_64 \ --enable-shared \ --enable-cross-compile \ --target-os=win32 \ --extra-cflags="-MD -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WIN32_WINNT=0x0A00" \ --extra-ldflags="-APPCONTAINER WindowsApp.lib" \ --prefix=../../../Build/Windows10/x64 make make install
2.9、Windows 10 ARM
- 运行【VS2015 x64 本机工具命令提示符】
- 在命令行窗口运行【C:\msys64\msys2_shell.cmd】
- 进入ffmpeg目录
cd /e/test/ffmpeg
-
在msys2命令行执行如下命令:
mkdir -p Output/Windows10/ARM cd Output/Windows10/ARM ../../../configure \ --toolchain=msvc \ --disable-programs \ --disable-d3d11va \ --disable-dxva2 \ --arch=arm \ --as=armasm \ --cpu=armv7 \ --enable-thumb \ --enable-shared \ --enable-cross-compile \ --target-os=win32 \ --extra-cflags="-MD -DWINAPI_FAMILY=WINAPI_FAMILY_APP -D_WIN32_WINNT=0x0A00 -D__ARM_PCS_VFP" \ --extra-ldflags="-APPCONTAINER WindowsApp.lib" \ --prefix=../../../Build/Windows10/ARM make make install
PS:
- 参照:https://trac.ffmpeg.org/wiki/CompilationGuide/WinRT