这几天一直捣鼓这个,configure/make了无数次,花了这么多功夫,总得记录一下。 以Win10 64位系统为例。
D:\Work\msys64\
打开D:\Work\msys64\etc\pacman.d\
D:\Work\msys64\etc\pacman.d\
编辑mirrorlist.mingw32,在文件开头添加:
mirrorlist.mingw32
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/i686 Server = http://mirrors.ustc.edu.cn/msys2/mingw/i686
编辑mirrorlist.mingw64,在文件开头添加:
mirrorlist.mingw64
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/mingw/x86_64 Server = http://mirrors.ustc.edu.cn/msys2/mingw/x86_64
编辑mirrorlist.msys,在文件开头添加:
mirrorlist.msys
Server = https://mirrors.tuna.tsinghua.edu.cn/msys2/msys/$arch Server = http://mirrors.ustc.edu.cn/msys2/msys/$arch
然后执行pacman -Sy刷新软件包数据即可。
pacman -Sy
运行D:\Work\msys64\msys2_shell.cmd,在弹出的shell窗口中执行
pacman -S make yasm nasm diffutils pkg-config pacman -S gcc base-devel vim pacman -S mingw-w64-i686-gcc pacman -S mingw-w64-x86_64-gcc pacman -S mingw-w64-x86_64-toolchain pacman -S mingw-w64-i686-toolchain
写在前面: 用Msys2生成的库有依赖,例如直接运行生成的static的ffmpeg.exe会报错。 此时,依赖的库基本上位于
D:\Work\msys64\mingw64\bin 或 D:\Work\msys64\mingw32\bin
我在编译的时候试了一下,需要将libwinpthread-1.dll和ffmpeg.exe打包在一起才能正常运行。
编译
先打开cmd窗口
cd D:\Work\msys64\ msys2_shell.cmd -mingw64
打开mingW32 shell后,cd 到ffmpeg所在目录
./configure --enable-static --disable-shared --disable-everything --enable-decoder=h264 --enable-parser=h264 --arch=x86_64 make make install
你可以在ffmpeg目录或者D:\Work\msys64\usr\local\bin\找到已经编译的东西
写在前面
重命名link.exe
设置环境变量
系统环境变量Path添加3个位置:
## 第一个位置先找到VS安装位置,然后下面有很多路径,根据当前设备与目的设备的情况决定 ## D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\ D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86 ## 第二个位置没啥好说的 D:\Work\msys64\usr\bin\ ## 第三个参数取决于mingW调用的是哪个窗口 ## msys2_shell.cmd -mingw64 / mingw32 D:\Work\msys64\mingw32\bin
配置msys2_shell.cmd
编辑D:\Work\msys64\msys2_shell.cmd
在@echo off后面的第二行插入VC的配置脚本,插入哪一个取决于当前设备与目的设备的情况: rem call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\vcvars64.bat" call "D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86\vcvarsamd64_x86.bat" 找到set MSYS2_PATH_TYPE=inherit所在行,去掉注释rem
在编译前的检查
cd D:\Work\msys64\ msys2_shell.cmd -mingw32
打开mingW32 shell后
which cl link yasm cpp #显示如下内容 /d/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/amd64_x86/cl /d/Program Files (x86)/Microsoft Visual Studio 14.0/VC/BIN/amd64_x86/link /usr/bin/yasm /mingw32/bin/cpp
如果不符,请重启电脑试一试,可能环境变量尚未生效。
./configure --toolchain=msvc --arch=x86_64 --enable-yasm --enable-asm --disable-debug --disable-doc --disable-ffplay --disable-ffprobe --enable-static --disable-shared --disable-everything --enable-decoder=h264 --enable-parser=h264 make make install
很多都放到具体的步骤里面了,那些趟过的雷就不说了