在Windows下使用msys2编译最新版的Redis

之前做了个教程是在Windows上使用Cygwin来编译Redis,不过今天发现了个更好的方案,在Windows上,使用msys2能够编译最新版的Redis。今天我就来分享一下编译的过程。

msys2和cygwin一样,都是在Windows下可以执行Linux命令并编译Linux软件的环境

1,下载安装Msys2并配置镜像源

官网下载并安装Msys2,安装过程很简单,这里就不再赘述安装过程了。

image.png

默认安装在C:\msys64目录下,安装完成后,打开安装目录下的msys2.exe即可打开msys2控制台,这个文件就是其主程序,可以创建一个快捷方式到桌面。

image.png

msys2使用的是pacman进行包管理,我们先熟悉一下常用的pacman命令:

# 安装软件包
pacman -S 软件包1 [软件包2...]

# 卸载软件包
pacman -R 软件包

# 卸载软件包及其依赖包
pacman -Rs 软件包

# 更新软件索引并更新系统
pacman -Syu
复制代码

首先我们要更换msys2的软件源,使其下载速度更快,我们更换清华的源,参照清华源官方的换源教程即可:换源教程

按照这个教程换完源之后,打开msys2的控制台,执行命令更新所有包:

pacman -Syu
复制代码

按照控制台中的英文提示完成更新系统即可。

2,安装编译Redis必要的软件包

打开msys2控制台,执行以下命令安装编译所需的gccmake包:

pacman -S msys/gcc msys/make
复制代码

安装完成后,我们还需要修改msys2中的一个库文件,否则编译Redis的时候会报错找不到符号Dl_info

用文本编辑器打开msys2安装目录下的usr/include/dlfcn.h这个文件,找到49行这个位置,如下图,将49行#if __GNU_VISIBLE和61行的#endif这两行内容删掉,保存。(建议修改之前先备份这个文件)

re.png

3,编译Redis

Redis官网下载源代码并解压。(备用下载,提取码:2333

在msys2控制台中,使用cd命令进入到解压后Redis源码所在目录下:

cd "源码目录"
复制代码

注意,命令中路径都要用英文双引号包围,下面的命令中路径也是一样。

然后开始编译:

make
复制代码

最后出现Hint: It's a good idea to run 'make test' ;)说明编译成功。

image.png

再通过以下命令把二进制可执行文件提取出来:

make PREFIX="要提取到的路径" install
复制代码

例如我:

make PREFIX="C:\Users\swsk33\Downloads\redis-6.2.6-已编译" install
复制代码

然后在指定目录中就出现了bin文件夹,这个文件夹中就是编译好了的Redis的Windows二进制文件,可以直接执行。

不过直接打开会提示找不到dll的错误:

image.png

这时我们只需要在msys2的安装目录中的usr/bin目录下,找到msys-2.0.dll这个文件,复制一个到我们Redis已编译的二进制exe文件同目录下,即可直接运行了:

image.png

现在,将这个Redis的exe文件所在目录加入Path环境变量,即可使用命令行调用Redis的命令了!