1、下载安装MSYS2
官网下载64位的安装包,下载完之后进行安装,安装目录自行决定,我这里安装在C盘,我的安装目录是C:\msys64
2、编辑msys2_shell.cmd
安装完之后找到msys2_shell.cmd脚本文件,将rem set MSYS2_PATH_TYPE=inherit
改为
set MSYS2_PATH_TYPE=inherit
,修改的目的是为了MSYS2继承vs的环境.
3、下载yasm
官网下载yasm,我的电脑是64位,所以下载的是64位的
将下载好的yasm重命名为yasm.exe,并复制到C:\msys64\usr\bin目录下。
4、运行msys2_shell.cmd脚本文件
运行以下命令:
pacman -Syu #中间会退出一次,再次打开重新执行此命令即可
pacman -S make #安装make
pacman -S diffutils
pacman -S nasm
mv /usr/bin/link.exe /usr/bin/link.exe.bak #重命名link.exe,目的是避免与MSVC的link.exe冲突
5、安装GCC和make
打开mingw64.exe,输入命令:
pacman -S mingw-w64-x86_64-toolchain
此时环境配置基本完成
6、编译
打开vs的 x64 Native Tools Command Prompt for VS2019(适用于 VS 2017 的 x64 本机工具命令提示),在窗口中输入cd C:\msys64,然后输入命令
msys2_shell.cmd -mingw64
打开msys的shell命令窗口。从vs的shell打开msys2 shell是为了继承vs的环境路径。
7、检验编译环境工具
在打开的msys2的shell窗口输入命令
which cl link yasm cpp
看命令返回结果,如下图,若出现/usr/bin/yasm、/mingw64/bin/cpp就说明环境没问题
8、cd到x264目录,执行命令
./../../x264/configure --prefix=./../../installed --host=x86_64-w64-mingw32 --enable-shared --disable-thread --disable-avs --extra-ldflags=-Wl,--output-def=libx264.def
configure和prefix路径根据自己的路径来写
9、接着执行命令
make
make install
成功之后会生成以下文件libx264.a、libx264.def、libx264.dll.a、libx264-155.dll和x264.exe
10、生成lib文件
执行命令,生成64位lib文件
lib /machine:X64 /def:libx264.def
成功之后即可得到libx264.lib和libx264.exp文件
若出现以下错误,则打开vs2019自带工具x64_x86 Cross Tools Command prompt for VS 2019,cd到.dll所在目录,执行上述命令生成lib库
我编译公司线上使用的x264源码时遇到了multiple definition多重定义的error,参考下面的文章解决了error
多重定义的解决方案
编译遇到的另一个error:conflicting types for,原因是因为函数使用的位置位于声明之前,将函数定义在被调用之前即可。参考文章: https://blog.csdn.net/biubiuibiu/article/details/78326358