当前位置: 首页 > web >正文

ubuntuserver24.04版本:redis编译安装时出现工具、依赖库问题解决方法

问题点: 安装redis时,解压redis-4.0.1.tar.gz后,使用make&&make install命令安装出现报错:

ubuntu:/usr/local/deploy/redis-4.0.1$ sudo make&&make install
cd src && make all
make[1]: Entering directory '/usr/local/deploy/redis-4.0.1/src'CC Makefile.dep
rm -rf redis-server redis-sentinel redis-cli redis-benchmark redis-check-rdb redis-check-aof *.o *.gcda *.gcno *.gcov redis.info lcov-html Makefile.dep dict-benchmark
(cd ../deps && make distclean)
make[2]: Entering directory '/usr/local/deploy/redis-4.0.1/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
make[2]: Leaving directory '/usr/local/deploy/redis-4.0.1/deps'
(rm -f .make-*)
echo STD=-std=c99 -pedantic -DREDIS_STATIC='' >> .make-settings
echo WARN=-Wall -W -Wno-missing-field-initializers >> .make-settings
echo OPT=-O2 >> .make-settings
echo MALLOC=jemalloc >> .make-settings
echo CFLAGS= >> .make-settings
echo LDFLAGS= >> .make-settings
echo REDIS_CFLAGS= >> .make-settings
echo REDIS_LDFLAGS= >> .make-settings
echo PREV_FINAL_CFLAGS=-std=c99 -pedantic -DREDIS_STATIC='' -Wall -W -Wno-missing-field-initializers -O2 -g -ggdb   -I../deps/hiredis -I../deps/linenoise -I../deps/lua/src -DUSE_JEMALLOC -I../deps/jemalloc/include >> .make-settings
echo PREV_FINAL_LDFLAGS=  -g -ggdb -rdynamic >> .make-settings
(cd ../deps && make hiredis linenoise lua jemalloc)
make[2]: Entering directory '/usr/local/deploy/redis-4.0.1/deps'
(cd hiredis && make clean) > /dev/null || true
(cd linenoise && make clean) > /dev/null || true
(cd lua && make clean) > /dev/null || true
(cd jemalloc && [ -f Makefile ] && make distclean) > /dev/null || true
(rm -f .make-*)
(echo "" > .make-cflags)
(echo "" > .make-ldflags)
MAKE hiredis
cd hiredis && make static
make[3]: Entering directory '/usr/local/deploy/redis-4.0.1/deps/hiredis'
gcc -std=c99 -pedantic -c -O3 -fPIC  -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb  net.c
make[3]: gcc: No such file or directory
make[3]: *** [Makefile:156: net.o] Error 127
make[3]: Leaving directory '/usr/local/deploy/redis-4.0.1/deps/hiredis'
make[2]: *** [Makefile:46: hiredis] Error 2
make[2]: Leaving directory '/usr/local/deploy/redis-4.0.1/deps'
make[1]: [Makefile:180: persist-settings] Error 2 (ignored)CC adlist.o
/bin/sh: 1: cc: not found
make[1]: *** [Makefile:228: adlist.o] Error 127
make[1]: Leaving directory '/usr/local/deploy/redis-4.0.1/src'
make: *** [Makefile:6: all] Error 2
ubuntu:/usr/local/deploy/redis-4.0.1$

根据提供的错误日志,编译失败的主要原因是系统中缺少必要的编译工具和依赖库。以下是解决步骤:

1. 安装编译工具链

错误信息显示gcc: No such file or directorycc: not found,说明缺少C编译器。执行以下命令安装基础编译工具:

sudo apt update
sudo apt install build-essential

2. 安装Redis依赖库

Redis需要依赖jemalloc、hiredis等库,安装相关依赖:

sudo apt install libjemalloc-dev tcl

3. 清理并重试编译

进入Redis源码目录,清理之前的编译文件后重新编译:

cd /usr/local/deploy/redis-4.0.1
sudo make distclean  # 彻底清理之前的编译文件
sudo make           # 重新编译

4. 处理jemalloc问题

如果仍出现jemalloc相关错误(如fatal error: jemalloc/jemalloc.h: No such file or directory),强制使用libc分配器:

sudo make MALLOC=libc

5. 安装Redis

编译成功后执行安装:

sudo make install

常见问题补充

  • 若缺少其他依赖:根据编译过程中的错误提示安装对应包(如sudo apt install libssl-dev)。
  • 权限问题:确保/usr/local/bin有写入权限(sudo make install已使用sudo)。
  • 较旧系统兼容性:Ubuntu 18.04+通常无此问题,如系统版本过低可升级或下载更新的Redis版本。

验证安装

redis-server --version
# 应输出:Redis server v=4.0.1 ...

注意:Redis 4.0.1是较旧版本(2017年发布),建议使用更新的稳定版(如7.2.x)以获得更好的安全性和功能支持。

http://www.xdnf.cn/news/13403.html

相关文章:

  • 「Java基本语法」运算符与表达式
  • Java多线程实现之线程调度详解
  • 35. 搜索插入位置
  • OpenLayers 可视化之热力图
  • 滑动窗口最大值和最小值
  • 理解 PostgreSQL 中的 Virtual Transaction ID(VXID)
  • 123123
  • 【Java】动态加载数据库驱动:灵活连接
  • IMX6ULL--EPIT 定时器理论
  • 打卡第41天:训练和测试的规范写法
  • C/C++八股文
  • 面试题 - 日志(Java)
  • 网络爬虫学习心得
  • 智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
  • 二维数组判断空的情况
  • uniapp自定义导航栏,采用粘性定位
  • STM32 PID控制
  • python打卡训练营打卡记录day50
  • 林清轩以研发为核,用专利技术筑就高端国货护肤壁垒
  • 函数02 day11
  • AI赋能农业
  • 第十六章 I2C
  • 【PhysUnits】17.6 Unit基础结构(unit.rs)
  • <component :is=““>
  • CentOS7下的ZooKeeper部署
  • 55. Jump Game
  • Redis持久化策略介绍,以及如何选择?
  • 第二十四章 通用同步异步收发器(USART)
  • java异步编程难题拆解
  • Java 中 switch-case 语句的执行逻辑与避坑指南