make cd src && make all make[1]: Entering directory `/usr/local/redis-5.0.9/src' LINK redis-server cc: error: ../deps/hiredis/libhiredis.a: No such file or directory cc: error: ../deps/lua/src/liblua.a: No such file or directory cc: error: ../deps/jemalloc/lib/libjemalloc.a: No such file or directory make[1]: *** [redis-server] Error 1 make[1]: Leaving directory `/usr/local/redis-5.0.9/src' make: *** [all] Error 2
时间: 2025-07-05 22:34:58 浏览: 3
<think>好的,我现在需要解决用户提到的Redis 5.0.9编译时出现的错误:“cc: error: hiredis lua jemalloc 文件不存在”。这个问题看起来是编译过程中缺少必要的依赖库导致的。用户可能是在尝试从源码编译安装Redis时遇到了这个问题。我需要根据提供的引用信息和一般知识来给出解决方案。
首先,我要确认这些错误信息中的每个部分可能对应的依赖项。Hiredis是Redis的C客户端库,可能在编译时需要用到。Lua是Redis支持的脚本语言,jemalloc是一个内存分配器,Redis默认使用它来提高内存管理效率。如果这些组件不存在,编译过程就会失败。
接下来,我需要检查用户的环境是否安装了这些依赖。根据引用[5],用户是在CentOS 7环境下编译安装Redis 5.0.9的。因此,解决方案应该针对CentOS/RHEL系的系统,使用yum包管理器来安装依赖。
首先,解决jemalloc的问题。Redis默认使用jemalloc,但有时候系统可能没有安装或者配置不正确。可能需要安装jemalloc-devel包。此外,如果系统安装了其他内存分配器比如libc的malloc,可能需要通过make参数指定使用哪个分配器。
然后是hiredis和lua的问题。hiredis可能属于Redis源码的一部分,但有时候可能需要单独安装或确保子模块正确初始化。Lua则需要安装相应的开发包,比如lua-devel。
可能还需要安装其他编译工具和依赖,比如gcc、make等,不过根据用户已经执行了make命令,可能这些基本工具已经安装。但有时候开发包如openssl-devel也可能需要。
根据这些分析,解决方案的步骤可能包括:
1. 安装必要的依赖库:jemalloc-devel、lua-devel等。
2. 清理之前的编译残留,重新编译,并指定jemalloc的路径或强制使用libc。
3. 如果问题依旧,检查源码是否完整,是否在解压或下载过程中有损坏。
引用中的信息提到用户已经下载了Redis 5.0.9的源码包,并进行了编译,但可能缺少依赖。因此,指导用户安装这些依赖库是关键。例如,在CentOS中,可以通过yum安装这些开发包。
另外,根据引用[5]中的启动文件配置,用户可能已经正确安装了Redis,但编译阶段的问题可能阻止了正确的构建。因此,确保所有开发工具和依赖项已安装是必要的。
可能的解决方案步骤:
- 安装依赖:sudo yum install -y jemalloc-devel lua-devel openssl-devel systemd-devel
- 进入Redis源码目录,清理之前的编译:make distclean
- 重新编译,可能需要指定分配器:make MALLOC=libc(如果jemalloc仍然有问题)
- 如果问题出在hiredis或lua,可能需要检查这些子模块是否存在,或者重新下载源码包,确保完整性。
另外,检查用户是否正确地解压了源码包,并进入正确的目录进行编译。例如,引用[1]中提到将文件移动到/usr/local/并解压,然后进入redis-5.0.9目录执行make。如果步骤正确,但依赖库缺失,安装相应的开发包即可。
可能还需要提醒用户,在安装这些开发包后,重新运行make命令,并观察错误是否解决。如果仍然出现hiredis或lua相关的错误,可能需要手动下载这些子模块或确保它们存在于正确的位置。
总结解决方案的步骤,应该分点列出,确保用户能逐步执行,并覆盖所有可能的缺失依赖。同时,根据引用中的信息,提供具体的命令,如yum安装命令,以及make时的参数调整。</think>### 解决Redis 5.0.9编译错误`cc: error: hiredis lua jemalloc 文件不存在`的步骤
此错误通常是由于系统缺少Redis编译所需的依赖库或编译环境配置不当导致。以下是具体解决方案:
---
#### 1. 安装基础编译工具
确保已安装`gcc`、`make`等基础工具:
```bash
sudo yum install -y gcc make autoconf automake
```
---
#### 2. 安装缺失的依赖库
根据错误信息,需安装以下依赖:
- **jemalloc**:高性能内存分配器
- **lua**:脚本语言支持
- **hiredis**:Redis的C客户端库(通常包含在Redis源码中,但需确保子模块完整)
执行以下命令安装:
```bash
sudo yum install -y jemalloc-devel lua-devel openssl-devel
```
---
#### 3. 清理并重新编译Redis
若依赖已安装但编译仍失败,尝试清理残留文件后重新编译:
```bash
# 进入Redis源码目录
cd /usr/local/redis-5.0.9
# 清理之前编译的临时文件
make distclean
# 重新编译(默认使用jemalloc)
make
```
---
#### 4. 强制使用`libc`代替`jemalloc`(可选)
若系统`jemalloc`兼容性有问题,可改用`libc`:
```bash
make MALLOC=libc
```
---
#### 5. 检查源码完整性
若问题仍未解决,可能是源码包损坏或子模块缺失:
1. 重新下载Redis 5.0.9源码包:
```bash
wget https://download.redis.io/releases/redis-5.0.9.tar.gz
```
2. 重新解压并编译:
```bash
tar -zxvf redis-5.0.9.tar.gz
cd redis-5.0.9
make
```
---
#### 6. 验证编译结果
编译成功后,可执行文件会生成在`src/`目录:
```bash
ls src/redis-server # 确认可执行文件存在
```
---
### 关键点总结
- **依赖库安装**:通过`yum`安装`jemalloc-devel`和`lua-devel`是核心步骤[^1][^5]。
- **编译参数调整**:若内存分配器冲突,使用`make MALLOC=libc`绕过问题。
- **源码完整性**:重新下载源码可修复子模块缺失或文件损坏[^3]。
阅读全文
相关推荐

















