目录
3.2 如何关联 Visual Studio 到 MSYS2?
最近忙了点,没更新,碰到有朋友说,windows vs编译x264的过程的问题比较麻烦,其实这个不难,多用几次就熟了,顺便我就写下,给需要的各位做个参考。
在 Windows 下使用 MSYS2 编译 x264 库.按下面顺序执行就行。
在使用 MSYS2(特别是 mingw-w64,即 MinGW64)编译需要依赖 Visual Studio 的项目时,通常需要确保 MSYS2 环境能够访问并使用 Visual Studio 的编译工具链,如 cl
、link
、lib
等。
1:MSYS2下载和配置
MSYS2 是一个提供类 Unix 环境的软件集成工具。它可以在 Windows 上提供类 Unix 的 shell 和软件包管理器,方便进行开发工作。
使用它是因为x264的构建过程依赖于一些类Unix系统的工具和环境,而Windows默认的命令行环境不支持这些工具或者支持的方式有所不同。
工具链: x264编译需要用到一些Unix/Linux下常见的编译工具链,比如GCC等。MSYS提供了这些工具链的Windows版本或者兼容层。
-
下载 MSYS2: 访问 MSYS2 官网下载页面:MSYS2 Official Website,选择适合你系统位数的安装程序下载(一般选择 64 位版本)。
-
安装 MSYS2: 安装过程中,选择默认选项安装。安装完成后,可以通过开始菜单中的 MSYS2 Shell 或者直接在命令提示符中运行
msys2_shell.cmd
打开 MSYS2。
我下载的位置 直接放在C盘 C:\msys64
1.1:MSYS2更新和配置
# 更新系统
#由于默认的源下载很慢所以为了更愉快的体验最好替换国内的源,此处使用清华源。
sed -i "s#mirror.msys2.org/#mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
#换完源使用命令更新
pacman -Suy
# 安装基本开发工具和依赖
pacman -S base-devel
# 关闭 MSYS2 Shell
exit
#选择使用mingw64编译,关闭上面,msys2 mingw64,窗口输入:
pacman -S mingw-w64-x86_64-toolchain
安装完后,打开安装目录下msys2_shell.cmd文件,将注释掉的 rem set MSYS2_PATH_TYPE=inherit 改成 set MSYS2_PATH_TYPE=inherit
将 set MSYS2_PATH_TYPE=inherit
设置为激活状态是为了确保 MSYS2 Shell 在启动时能够继承当前 Windows 环境中的路径设置和工具链。这对于在 MSYS2 中使用 Visual Studio 的编译工具链特别重要,因为它们通常不会在 MSYS2 默认的环境变量中。
1.2. 安装 Git 和相关工具
Yasm 是一个跨平台的汇编器,适用于多种体系结构。x264 使用 Yasm 进行汇编优化,因此需要先安装 Yasm。
Nasm 也是一个跨平台的汇编器,x264 也可以使用 Nasm 进行汇编优化。
Git 下载x264代码
进入到msys64 终端后执行如下命令:
# 安装 Git
pacman -S git
# 安装 Yasm(汇编器)
pacman -S yasm
# 安装 Nasm(汇编器)
pacman -S nasm
检查安装是否成功
# 检查 Yasm 版本
yasm --version
# 检查 Nasm 版本
nasm --version
2:环境路径配置
2.1:配置vs2017路径和 msys2的路径
将vs2017的安装路径 和msys2的路径 分别加入到环境变量中去,
我的相关位置是:参考下
D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\Hostx64\x64
C:\msys64\usr\bin
cd c:\msys64
msys2_shell.cmd -mingw64 #打开msys2的mingw64窗口
检查编译环境工具
which cl link yasm cpp
3:编译x264
环境搭建完了,编译就行
# cd / #进入工作目录下
开始下载和编译x264
git clone http://git.videolan.org/git/x264.git
./configure --prefix=../build --host=x86_64-w64-mingw32 --enable-shared --extra-ldflags=-Wl,--output-def=libx264.def
make
make install
下载后 会在msys目录下有x264文件夹:
编译生成的动态链接库(DLL)可能没有附带对应的导出库文件(.lib
)。这种情况下,需要手动生成 .lib
文件,以便在链接时使用。
也就是这时候 只有dll 没有lib
在你执行 ./configure
时,配置选项中包含了 --extra-ldflags=-Wl,--output-def=libx264.def
,这会生成一个导出定义文件 libx264.def
。导出定义文件描述了动态链接库中需要导出的符号(函数、变量等)。
使用libx264.def生成lib
在C:\msys64\build\lib下创建一个文件夹,把libx264.def拷贝到这里
cd \
cp ./libx264.def ../build/lib/
cd ../build/lib
#生成64位lib文件命令:
lib /machine:X64 /def:libx264.def
最后生成:
4:总结
在使用 MSYS2(特别是 mingw-w64,即 MinGW64)编译需要依赖 Visual Studio 的项目时,通常需要确保 MSYS2 环境能够访问并使用 Visual Studio 的编译工具链,如 cl
、link
、lib
等。以下是关联 Visual Studio 的必要步骤和原因:
3.1 为什么需要关联 Visual Studio?
-
使用 Visual Studio 工具链:
-
MSYS2 默认的 MinGW 环境并不直接包含 Visual Studio 的编译工具链。这些工具链包括了高度优化和特定于 Windows 平台的编译器和链接器,适合开发 Windows 下的应用和库。
-
-
路径和环境设置:
-
Visual Studio 的工具通常安装在特定路径下,比如
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.x.xxxxx\bin\Hostx64\x64
。MSYS2 默认情况下并不会自动搜索这些路径,因此需要手动配置。
-
-
确保编译环境一致性:
-
如果项目依赖于 Visual Studio 的特性或者需要使用 Visual Studio 编译的库,确保 MSYS2 中能够调用 Visual Studio 的工具链是非常重要的。
-
3.2 如何关联 Visual Studio 到 MSYS2?
-
修改
msys2_shell.cmd
文件:-
打开 MSYS2 安装目录下的
msys2_shell.cmd
文件。 -
将注释掉的
rem set MSYS2_PATH_TYPE=inherit
改成set MSYS2_PATH_TYPE=inherit
。 -
这样设置的目的是确保 MSYS2 Shell 在启动时能够继承当前 Windows 系统环境中的路径和设置,包括 Visual Studio 的路径和工具链。
-
-
启动 MSYS2 Shell:
-
在开始菜单中找到 Visual Studio 2017 的目录,选择适用于 VS 2017 的 x64 本机工具命令提示符(或者使用其他版本对应的命令提示符)。
-
在打开的命令提示符中,输入以下命令切换到 MSYS2 安装目录:
cd C:\msys64
-
然后输入以下命令以启动 MSYS2 的 mingw64 环境:
msys2_shell.cmd -mingw64
-
这个命令会打开一个新的 MSYS2 Shell 窗口,确保该窗口能够使用 Visual Studio 的工具链。
-
-
验证路径设置:
-
在新打开的 MSYS2 Shell 窗口中,可以使用
which
命令来验证是否能够找到cl
、link
、lib
等工具:which cl which link which lib
-
如果输出显示了正确的路径,说明已经成功关联并配置了 Visual Studio 的工具链到 MSYS2 环境中。
-
注:下午忙,等会再优化