6 redis 编译失败_Windows 系统编译 Redis 6.0.7 最新版

redis最新版本,windows系统最新版本redis

Redis5.0带来了Stream类型。从字面上看是流类型,但其实从功能上看,应该是Redis对消息队列(MQ,Message Queue)的完善实现。用过Redis做消息队列的都了解,基于Reids的消息队列实现有很多种,例如:

PUB/SUB,订阅/发布模式

基于List的 LPUSH+BRPOP 的实现

基于Sorted-Set的实现

自己的一个小项目中,需要使用到Stream类型数据,所以,就要开始折腾了。

手懒不想自己编译Redis Windows版的,可以联系我。

看Redis文档,其实它是不能直接支持windows系统的,但是咱们工人有力量,折腾下就好。

在网上查,看着有用Cygwin编译成功的,但是我想用MinGW试试,使用MinGW最终没有成功,差在缺少poll.h 文件,但是发现Cygwin64中是有这个文件的。所以还是转到了使用Cygwin进行编译,最终编译成功,做了一个普通版,一个TLS版,。

编译systemd版本Redis

编译失败

要编译一个systemd版本的,但是报错,应该是缺少环境。

reids的开发文档中说:要使用systemd支持进行构建,您将需要systemd开发库(例如Debian / Ubuntu上的libsystemd-dev或CentOS上的systemd-devel)

~/redis-6.0.7

$ make USE_SYSTEMD=yes

cd src && make all

make[1]: 进入目录“/home/admin/redis-6.0.7/src”

Makefile:168: *** USE_SYSTEMD is set to "yes", but pkg-config cannot find libsystemd。 停止。

make[1]: 离开目录“/home/admin/redis-6.0.7/src”

make: *** [Makefile:6:all] 错误 2

0

1

2

3

4

5

6

~/redis-6.0.7

$makeUSE_SYSTEMD=yes

cdsrc&&makeall

make[1]:进入目录“/home/admin/redis-6.0.7/src”

Makefile:168:***USE_SYSTEMDissetto"yes",butpkg-configcannotfindlibsystemd。停止。

make[1]:离开目录“/home/admin/redis-6.0.7/src”

make:***[Makefile:6:all]错误2

编译Mac OS版本的 Redis

编译失败

还要编译一个Mac OS版本,还是缺少必要环境文件

$ make MALLOC=jemalloc

0

$makeMALLOC=jemalloc

...

cc: 错误:../deps/jemalloc/lib/libjemalloc.a:No such file or directory

make[1]: *** [Makefile:283:redis-server] 错误 1

make[1]: 离开目录“/home/admin/redis-6.0.7/src”

make: *** [Makefile:6:all] 错误 2

0

1

2

3

4

...

cc:错误:../deps/jemalloc/lib/libjemalloc.a:Nosuchfileordirectory

make[1]:***[Makefile:283:redis-server]错误1

make[1]:离开目录“/home/admin/redis-6.0.7/src”

make:***[Makefile:6:all]错误2

进入依赖,编译依赖:

$ cd deps/jemalloc/

$ ls

autogen.sh ChangeLog config.stamp.in configure.ac include jemalloc.pc.in Makefile.in run_tests.sh test

bin config.log config.status COPYING INSTALL.md m4 msvc scripts TUNING.md

build-aux config.stamp configure doc jemalloc.pc Makefile README src VERSION

$ make

gcc -std=gnu11 -Wall -Wsign-compare -Wundef -Wno-format-zero-length -pipe -g3 -O3 -funroll-loops -std=gnu99 -Wall -pipe -g3 -O3 -funroll-loops -c -D_REENTRANT -Iinclude -Iinclude -DJEMALLOC_NO_PRIVATE_NAMESPACE -o src/jemalloc.sym.o src/jemalloc.c

In file included from include/jemalloc/internal/jemalloc_preamble.h:5,

from src/jemalloc.c:2:

include/jemalloc/internal/jemalloc_internal_decls.h:22:14: 致命错误:sys/syscall.h:No such file or directory

22 | # include

| ^~~~~~~~~~~~~~~

编译中断。

make: *** [Makefile:350:src/jemalloc.sym.o] 错误 1

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$cddeps/jemalloc/

$ls

autogen.shChangeLogconfig.stamp.inconfigure.acincludejemalloc.pc.inMakefile.inrun_tests.shtest

binconfig.logconfig.statusCOPYINGINSTALL.mdm4msvcscriptsTUNING.md

build-auxconfig.stampconfiguredocjemalloc.pcMakefileREADMEsrcVERSION

$make

gcc-std=gnu11-Wall-Wsign-compare-Wundef-Wno-format-zero-length-pipe-g3-O3-funroll-loops-std=gnu99-Wall-pipe-g3-O3-funroll-loops-c-D_REENTRANT-Iinclude-Iinclude-DJEMALLOC_NO_PRIVATE_NAMESPACE-osrc/jemalloc.sym.osrc/jemalloc.c

Infileincludedfrominclude/jemalloc/internal/jemalloc_preamble.h:5,

fromsrc/jemalloc.c:2:

include/jemalloc/internal/jemalloc_internal_decls.h:22:14:致命错误:sys/syscall.h:Nosuchfileordirectory

22|#    include

|^~~~~~~~~~~~~~~

编译中断。

make:***[Makefile:350:src/jemalloc.sym.o]错误1

Cygwin中没有 sys/syscall.h 文件,结果没有结果了。

———————-

下面是编译成功的 Redis 6.0.7 普通版本和TLS版

———————-

编译 Redis 普通版和TLS版

先安装Cygwin64环境,并安装gcc,gcc-core,gcc-g++devel包;

在windows系统中把Redis源码解压放到 ./cygwin64/home/admin 下;

进入Cygwin模拟系统的 /home/admin 下,使用ls命令就会看到刚才放入的文件夹;

进入 redis-6.0.7 文件夹,可以进行一次git提交,这样在编译成功后可以清楚的看到增加了哪些文件,

$ make

0

$make

如果是TLS版本:

$ make BUILD_TLS=yes

0

$makeBUILD_TLS=yes

如果顺利的话,会看到:

但是一般的时候,不会那么顺利的!!!

在windows系统中新建一个文件夹redis-v6.0.7,把 ./redis-6.0.7/src下的.exe文件全部拷贝过来;

再到./cygwin64/bin下,找到cygwin1.dell拷贝到新建的文件夹中

再把项目根目录的 redis.conf 文件,拷贝过来

测试,查看帮助信息,进入redis目录,命令:redis-server.exe -h

Redis-v6.0.7>redis-server.exe -h

Usage: ./redis-server [/path/to/redis.conf] [options]

./redis-server - (read config from stdin)

./redis-server -v or --version

./redis-server -h or --help

./redis-server --test-memory

Examples:

./redis-server (run the server with default conf)

./redis-server /etc/redis/6379.conf

./redis-server --port 7777

./redis-server --port 7777 --replicaof 127.0.0.1 8888

./redis-server /etc/myredis.conf --loglevel verbose

Sentinel mode:

./redis-server /etc/sentinel.conf --sentinel

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

Redis-v6.0.7>redis-server.exe-h

Usage:./redis-server[/path/to/redis.conf][options]

./redis-server-(readconfigfromstdin)

./redis-server-vor--version

./redis-server-hor--help

./redis-server--test-memory

Examples:

./redis-server(runtheserverwithdefaultconf)

./redis-server/etc/redis/6379.conf

./redis-server--port7777

./redis-server--port7777--replicaof127.0.0.18888

./redis-server/etc/myredis.conf--loglevelverbose

Sentinelmode:

./redis-server/etc/sentinel.conf--sentinel

启动redis,命令:redis-server.exe 或 redis-server.exe redis.conf

再开个cmd,进入此目录,命令:redis-cli.exe

完成。

另外,做了两个bat脚本,一个是添加redis到windows系统服务(create-service.bat),一个是删除此添加redis的系统服务(delete-service.bat)。

常见报错:

1、

...

cc: 错误:../deps/linenoise/linenoise.o:No such file or directory

make[1]: *** [Makefile:299:redis-cli] 错误 1

make[1]: 离开目录“/home/admin/redis-6.0.7/src”

make: *** [Makefile:6:all] 错误 2

0

1

2

3

4

...

cc:错误:../deps/linenoise/linenoise.o:Nosuchfileordirectory

make[1]:***[Makefile:299:redis-cli]错误1

make[1]:离开目录“/home/admin/redis-6.0.7/src”

make:***[Makefile:6:all]错误2

解决办法:进入/home/admin/redis-6.0.7/src/deps/linenoise/ 目录,编译

2、

cc: 错误:../deps/hiredis/libhiredis.a:No such file or directory

cc: 错误:../deps/lua/src/liblua.a:No such file or directory

make[1]: *** [Makefile:283:redis-server] 错误 1

make[1]: 离开目录“/home/admin/redis-6.0.7/src”

make: *** [Makefile:6:all] 错误 2

0

1

2

3

4

cc:错误:../deps/hiredis/libhiredis.a:Nosuchfileordirectory

cc:错误:../deps/lua/src/liblua.a:Nosuchfileordirectory

make[1]:***[Makefile:283:redis-server]错误1

make[1]:离开目录“/home/admin/redis-6.0.7/src”

make:***[Makefile:6:all]错误2

解决办法:进入/home/admin/redis-6.0.7/src/deps/hiredis/ 目录,编译

3、

$ make test

cd src && make test

make[1]: 进入目录“/home/admin/redis-6.0.7/src”

You need tcl 8.5 or newer in order to run the Redis test

make[1]: *** [Makefile:330:test] 错误 1

make[1]: 离开目录“/home/admin/redis-6.0.7/src”

make: *** [Makefile:6:test] 错误 2

0

1

2

3

4

5

6

$maketest

cdsrc&&maketest

make[1]:进入目录“/home/admin/redis-6.0.7/src”

Youneedtcl8.5ornewerinordertoruntheRedistest

make[1]:***[Makefile:330:test]错误1

make[1]:离开目录“/home/admin/redis-6.0.7/src”

make:***[Makefile:6:test]错误2

解决办法:

安装或更新 GNU Cygwin 中的 tcl 版本大于 8.5即可

其实还有其它报错,但是没记下那么多,理解意思就行,大致的意思,一是编译环境依赖版本的问题,二是需要预编译包内自带的所需的工具。

手懒不想自己编译redis最新版本(Redis Windows版)的,可以联系我。

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页