先啰嗦几句,为啥不用MSYS2编译,因为测试后换机器就无法运行,也不知道是哪的问题,用cygwin编译就没问题了,很奇怪。
先导说明
具体编译成32位,或是64位版本取决于使用的 cygwin 是什么版本,编译方法完全一样。
一、官网下载cygwin并安装
安装时必须安装的几个编译用工具 make gcc-core libgcc1 libgccpp1
可以一起安装上的工具,安装后用命令操作更方便
vim nano wget curl
二、修改必要文件
安装前需要修改一个cygwin的文件,如果不改,在redis 6.2的版本可能会在编译中会报找不到Dl_info
/usr/include/dlfcn.h
搜索 Dl_info,删除上面的 #if 和下面的 #endif 两行,否则编译会报找不到Dl_info
#if GUN VISIBLE
...
#endif
三、获得或解压文件
去官方下载 redis 源文件,这里用的是 6.2.5 版
https://download.redis.io/releases/redis-6.2.5.tar.gz
可以在Windows中将redis源文件解压出来放在cygwin用户目录下
或者
也可以直接运行cygwin控制台运行以下命令
wget https://download.redis.io/releases/redis-6.2.5.tar.gz
tar xzvf redis-6.2.5.tar.gz
四、先编译所需组件
cd redis-6.2.5/deps
make hiredis linenoise lua hdr_histogram
开始编译 redis
cd ..
make
make install
五、编译完成后操作
拷贝以下文件放在一个目录中,就可以脱离 cygwin 正常运行了
到 redis-6.2.5/src 目录中,拷贝出所有 .exe文件,如下
redis-benchmark.exe
redis-check-aof.exe
redis-check-rdb.exe
redis-cli.exe
redis-sentinel.exe
redis-server.exe
到 redis-6.2.5 目录中,拷贝以下文件
redis.conf
sentinel.conf
到 cygwin 安装目录中 /bin 拷贝
cygwin1.dll
32位版的还需要到 cygwin 安装目录中 /bin 拷贝
cyggcc_s-1.dll