linux下安装redis
编译时(make)遇到报错
──(root㉿kali)-[/usr/local/redis]
└─# make
cd src && make all
make[1]: Entering directory '/usr/local/redis/src'
LINK redis-server
/usr/bin/ld: server.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: sds.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: ziplist.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: networking.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: util.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: object.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: db.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: replication.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: rdb.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: t_string.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: t_list.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: t_set.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: t_zset.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: t_hash.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: config.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: aof.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: pubsub.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: multi.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: debug.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: sort.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: syncio.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: cluster.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: crc16.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: slowlog.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: scripting.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: bio.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: rio.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: bitops.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: sentinel.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: notify.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: blocked.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: hyperloglog.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: latency.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: sparkline.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: redis-check-rdb.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: redis-check-aof.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: geo.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: lazyfree.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: module.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: evict.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: expire.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: childinfo.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: defrag.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: t_stream.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: lolwut.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
/usr/bin/ld: lolwut5.o:/usr/local/redis/src/sds.h:37: multiple definition of `SDS_NOINIT'; quicklist.o:/usr/local/redis/src/sds.h:37: first defined here
collect2: error: ld returned 1 exit status
make[1]: *** [Makefile:199: redis-server] Error 1
make[1]: Leaving directory '/usr/local/redis/src'
make: *** [Makefile:6: all] Error 2
考虑可能是gcc没有安装,使用 yum install gcc 命令安装gcc,安装过程中如果有问题,类似error: jemalloc/jemalloc.h: No such file or directory,使用 make MALLOC=libc ,然后再 cd src && make all
引用 皆我百晓生 小程序回复内容作答:
这个错误可能是因为你在编译Redis时使用了不兼容的选项或版本。解决方法如下:
确保你已经安装了Redis的所有依赖项。你可以使用以下命令安装它们:
sudo apt-get update
sudo apt-get install build-essential tcl
尝试清除之前的编译文件并重新编译:
make distclean
make
如果你正在尝试编译最新的Redis版本,请确保你的gcc编译器版本与Redis兼容。你可以尝试降级gcc版本并重新编译。例如,可以使用以下命令将gcc版本降级到5:
sudo apt-get install gcc-5 g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 100
如果以上步骤都没有解决问题,可以尝试使用预编译的Redis二进制文件。你可以从Redis的官方网站下载预编译的二进制文件并安装。
希望这能帮助你解决问题。如果问题仍然存在,请提供更多详细的错误信息,以便我们能够更好地帮助你。
你去这里看看
解决办法:
1、🍁进入redis-7.0.9/deps目录
2、🍁执行命令:make hiredis jemalloc linenoise lua
3、🍁再次执行命令: make MALLOC=libc
参照这篇文章安装一下,查看一下你的linux中gcc版本是否符合要求 https://daencode.blog.csdn.net/article/details/132259678
【以下回答由 GPT 生成】
这个编译错误提示了多个文件定义了SDS_NOINIT
,导致了冲突。解决这个问题的方法是在Redis的源代码中修改src/sds.h
文件来避免重复定义。
你可以按照以下步骤来修改源代码并重新编译Redis:
打开终端并进入Redis源代码所在的目录。
使用文本编辑器打开src/sds.h
文件。
在文件中搜索SDS_NOINIT
。
在发现的每个定义中,添加extern
关键字,以将其声明为外部变量。代码示例如下:
extern const struct sdshdr sdsHdrNoInit;
保存并关闭文件。
回到命令行终端,执行以下命令重新编译Redis:
make clean
make
这些步骤将会修复冲突并重新编译Redis。如果还遇到其他错误,请提供更多详细信息以便我能够提供进一步的帮助。
【相关推荐】
可以参考本人整理的文章,所有Linux安装软件都有,包括redis
https://blog.csdn.net/qi_ming88/article/details/132274815