如何在 Windows-10 上编译 REDIS 5.0.5,make 出错
How to compile REDIS 5.0.5 on Windows-10, error in make
已从 Redis 下载 5.0.5
cd 到 src 目录
制作
这肯定对其他人有用。关于如何解决这个问题的任何想法/提示?
短版:
在net.c ...
make[3]: Entering directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/deps/hiredis'
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
net.c:270:21: error: storage size of ‘hints’ isn’t known
struct addrinfo hints, *servinfo, *bservinfo, *p, *b;
^~~~~
以后
net.c:337:40: error: dereferencing pointer to incomplete type ‘struct addrinfo’
for (p = servinfo; p != NULL; p = p->ai_next) {
^~
然后
make[3]: *** [Makefile:156: net.o] Error 1
make[3]: Leaving directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/deps/hiredis'
make[2]: *** [Makefile:46: hiredis] Error 2
make[2]: Leaving directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/deps'
最后
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
make[1]: *** [Makefile:219: redis-server] Error 1
make[1]: Leaving directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/src'
make: *** [Makefile:6: all] Error 2
我遇到了完全相同的问题,我发现最好的解决方案是使用旧版本的 redis。最近(2019 年 3 月)更新了 Redis 3.2.13,因此它具有我需要的所有功能。如果你使用它,你必须在 redis-3.2.13/deps/hiredis/net.c 的 'include' 语句之后添加以下内容:
#ifdef __CYGWIN__
#define TCP_KEEPCNT 8
#define TCP_KEEPINTVL 150
#define TCP_KEEPIDLE 14400
#endif
之后我能够运行从根目录创建:
make distclean
make
这是基于 this github 对话。
希望对您有所帮助!
你可以试试
第 1 步:
从行中删除段“-std=c99”
$(CC) -std=c99 -pedantic -c $(REAL_CFLAGS) $<
在 .\redis-5.0.5\deps\hiredis
下的文件 Makefile 中
步骤 2:
在 'include' 语句之后的 includes deps/hiredis/net.c 之后添加以下段:
#ifndef TCP_KEEPCNT
#define TCP_KEEPCNT 8
#endif
#ifndef TCP_KEEPINTVL
#define TCP_KEEPINTVL 150
#endif
#ifndef TCP_KEEPIDLE
#define TCP_KEEPIDLE 14400
#endif
已从 Redis 下载 5.0.5 cd 到 src 目录 制作
这肯定对其他人有用。关于如何解决这个问题的任何想法/提示?
短版:
在net.c ...
make[3]: Entering directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/deps/hiredis'
cc -std=c99 -pedantic -c -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
net.c:270:21: error: storage size of ‘hints’ isn’t known
struct addrinfo hints, *servinfo, *bservinfo, *p, *b;
^~~~~
以后
net.c:337:40: error: dereferencing pointer to incomplete type ‘struct addrinfo’
for (p = servinfo; p != NULL; p = p->ai_next) {
^~
然后
make[3]: *** [Makefile:156: net.o] Error 1
make[3]: Leaving directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/deps/hiredis'
make[2]: *** [Makefile:46: hiredis] Error 2
make[2]: Leaving directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/deps'
最后
cc: error: ../deps/hiredis/libhiredis.a: No such file or directory
cc: error: ../deps/lua/src/liblua.a: No such file or directory
make[1]: *** [Makefile:219: redis-server] Error 1
make[1]: Leaving directory '/cygdrive/c/Users/pmoran/Downloads/redis-5.0.5/src'
make: *** [Makefile:6: all] Error 2
我遇到了完全相同的问题,我发现最好的解决方案是使用旧版本的 redis。最近(2019 年 3 月)更新了 Redis 3.2.13,因此它具有我需要的所有功能。如果你使用它,你必须在 redis-3.2.13/deps/hiredis/net.c 的 'include' 语句之后添加以下内容:
#ifdef __CYGWIN__
#define TCP_KEEPCNT 8
#define TCP_KEEPINTVL 150
#define TCP_KEEPIDLE 14400
#endif
之后我能够运行从根目录创建:
make distclean
make
这是基于 this github 对话。
希望对您有所帮助!
你可以试试
第 1 步:
从行中删除段“-std=c99”
$(CC) -std=c99 -pedantic -c $(REAL_CFLAGS) $<
在 .\redis-5.0.5\deps\hiredis
步骤 2:
在 'include' 语句之后的 includes deps/hiredis/net.c 之后添加以下段:
#ifndef TCP_KEEPCNT
#define TCP_KEEPCNT 8
#endif
#ifndef TCP_KEEPINTVL
#define TCP_KEEPINTVL 150
#endif
#ifndef TCP_KEEPIDLE
#define TCP_KEEPIDLE 14400
#endif