目录

  • 一、问题背景

  • 二、问题分析

  • 三、解决方案:手动编译缺失依赖

  • 四、重新编译 Redis 主程序

  • 五、小结与补充建议


一、问题背景

在从源代码编译 Redis(如 8.0.3 版本)时,很多开发者可能会遇到如下错误信息:

/usr/bin/ld: cannot find ../deps/fast_float/libfast_float.a: No such file or directory  
/usr/bin/ld: cannot find ../deps/jemalloc/lib/libjemalloc.a: No such file or directory  
collect2: error: ld returned 1 exit status  
make[1]: *** [Makefile:421: redis-server] Error 1  
make[1]: Leaving directory '/root/redis-8.0.3/src'  
make: *** [Makefile:11: all] Error 2

这类报错常发生在首次尝试本地源码编译时,属于构建依赖未准备完全的问题。


二、问题分析

该错误的核心原因在于 Redis 编译所依赖的两个静态库:

  • fast_float:用于高效解析浮点数的库,对 Redis 的性能优化有帮助。

  • jemalloc:高性能内存分配器,Redis 默认使用的内存分配库。

这两个依赖的静态库文件:

  • deps/fast_float/libfast_float.a

  • deps/jemalloc/lib/libjemalloc.a

在默认情况下并不会自动构建,除非显式执行相关 make 命令。因此如果直接 make Redis 主程序,就会在链接阶段因缺少 .a 文件而失败。


三、解决方案:手动编译缺失依赖

只需进入 Redis 源码目录下的 deps/ 目录,对缺失的依赖使用 make 命令进行编译即可。

  步骤如下:

# 进入 Redis 的依赖目录
cd /root/redis-8.0.3/deps# 单独编译 fast_float 和 jemalloc
make fast_float
make jemalloc

如果不确定缺少哪些依赖,或希望一次性完成所有依赖的构建,也可以执行:

make

 编译成功后,你将看到如下文件:

  • deps/fast_float/libfast_float.a

  • deps/jemalloc/lib/libjemalloc.a

这些是 Redis 可执行程序链接过程中所必需的静态库文件。


四、重新编译 Redis 主程序

在依赖构建完成后,回到 Redis 源码主目录继续执行编译流程:

cd /root/redis-8.0.3
make

如果没有其他错误,系统将成功生成以下关键可执行文件:

  • redis-server

  • redis-cli

这标志着 Redis 本地构建成功。


五、小结与补充建议

总结一句话:遇到 .a 文件找不到的错误,优先检查 deps/ 目录的依赖是否已构建!

 建议:

  • 每次首次下载 Redis 源码时,推荐先执行:

    cd deps
    make
    
  • 若中途编译失败、切换版本或拉取更新后再次编译,建议清理旧构建缓存后再执行构建命令:

    make distclean
    make
    

成功图片:

这将更好地避免因为残留文件或不兼容编译状态导致的奇怪错误。


愿各位道友编译无坑,一键成功,愉快享受 Redis 的高性能世界!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92285.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92285.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92285.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vscode+latex本地英文期刊环境配置

1、首先进行vscode的配置安装,这个网上很多教程直接安装就可以,我建议安装vscode就行(https://code.visualstudio.com/Download),vs studio稍微有点复杂而且有点大没必要,单写论文和简单的代码编译&#xf…

8.6 CSS3rem布局

rem布局 rem (font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之…

第十五章、非合作关系设定下的多智能体强化学习

0 前言 根据上一章的内容,已知完全合作关系下的多智能体利益一致有相同的目标,而非合作关系下实际上智能体的奖励和回报都是不一样的,它们都在努力让自己的利益最大化而并不考虑整体利益。 1 非合作关系设定下的策略学习要注意的点&#xff1…

分布式微服务--GateWay(过滤器及使用Gateway注意点)

前言、Spring Cloud Gateway 与 Web 依赖冲突 <!-- 下面两个依赖不能同时使用 --><!-- Gateway 组件 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId><ve…

latex in overleaf快速通关论文排版

文章目录 0 有效连接汇总 1 简介 1.1 latex是什么 1.2 overleaf是什么? 2 快速上手 步骤1 注册 步骤2 使用 (1) 找模板 (2) 整体论文的overleaf结构 (3) 编辑内容 打开可视化编辑 实时编译 编辑 (4) 导出 3 常规操作 3.1 公式 3.2 表格 3.3 图片 3.4 引用 3.5 代码块 3.6 设置…

OO SALV的栏位功能

SALV的栏位功能主要是通过CL_SALV_COLUMN_TABLE和CL_SALV_COLUMNS_TABLE这两个类的实现的。 SALV的栏位属性的详细功能包括异常状态图标、图标、符号、复选框、按钮、热点、超链接、单元格类型、单元格颜色、某一栏位颜色、某一行颜色&#xff0c;栏位隐藏等。关于颜色等样式属…

第2章:建模篇——第1节:点线面的选择与控制

目录 1.模式的切换 &#xff08;1&#xff09;编辑模式的切换 &#xff08;2&#xff09;点线面的切换 2.点线面的选择 &#xff08;1&#xff09;选择的设置 &#xff08;2&#xff09;循环选择 3.点线面的控制 4.总结 1.模式的切换 &#xff08;1&#xff09;编辑模…

深入解析嵌套事务:原理与应用

嵌套事务是指在事务执行过程中启动另一个事务形成的层级调用结构&#xff0c;主要用于处理跨服务或复杂业务场景的事务一致性控制。其核心是通过事务传播机制管理多个操作的原子性&#xff0c;具体原理和应用如下&#xff1a;一、核心概念与工作原理层级结构 嵌套事务由顶层事务…

[激光原理与应用-168]:测量仪器 - 对光学指标进行测量的仪器

一、基础光学参数测量仪器 - 频率/波长/功率光学显微镜用途&#xff1a;观察微小物体的显微图像&#xff0c;用于材料科学、生物学等领域。特点&#xff1a;高放大倍数和分辨率&#xff0c;可清晰显示微观结构。光谱分析仪用途&#xff1a;测量发光体的辐射光谱&#xff0c;分析…

MPC-in-the-Head 转换入门指南

1. 引言 本文将探讨构建零知识证明&#xff08;ZKP&#xff09;的一种非常有趣的方法&#xff1a; MPC-in-the-Head Transformation&#xff08;转换&#xff09;。 该方法最早由 2007 年的论文 Zero-knowledge from secure multiparty computation 提出&#xff0c;通常被称…

SpringBoot的优缺点

题目详细答案优点快速开发&#xff1a;Spring Boot 通过自动配置和大量的开箱即用功能&#xff0c;使得开发者可以快速启动和运行一个应用程序&#xff0c;无需进行繁琐的配置工作。简化配置&#xff1a;Spring Boot 提供了自动配置和 "starter" 依赖&#xff0c;简化…

[激光原理与应用-171]:测量仪器 - 能量型 - 激光能量计(单脉冲能量测量)

一、工作原理激光能量计通过光电效应或光热效应将激光脉冲能量转换为可测量的物理信号&#xff0c;核心原理可分为两类&#xff1a;光电型原理光电效应&#xff1a;激光照射光电材料&#xff08;如硅、硒化锌&#xff09;时&#xff0c;光子激发电子产生光电流或光电压。通过测…

四、应急响应

一、linux入侵排查 思路: 1、查看帐号 查看/etc/passwd文件中使用 /bin/bash 作为默认 shell 的用户。 查询特权用户特权用户(uid 为0) 查询可以远程登录的帐号信息 除root帐号外&#xff0c;其他帐号是否存在sudo权限。 禁用或删除多余及可疑的帐号 用find命令查看拥有…

类和对象(中):类的默认成员函数、构造函数、析构函数

&#x1f525;个人主页&#xff1a;胡萝卜3.0 &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》《数据结构》 《C干货分享》 ⭐️人生格言&#xff1a;不试试怎么知道自己行不行 目录 一、类的默认成员函数 二、构造函数 三…

如何优雅地刷力扣 LeetCode - Easy

Source 力扣LeetCode题库 App > LeetCode > 题库 > 题解 Notes 仔细审题&#xff0c;明确输入输出&#xff0c;通过测试用例。先特殊&#xff0c;后寻常。逆向思维。 在条件语句中用!代替&#xff0c;提前终止循环&#xff0c;减少嵌套层级&#xff08;else&#…

AI绘画:生成唐初程咬金全身像提示词

根据唐代历史记载和艺术形象特征&#xff0c;以下是优化后的中文Midjourney 提示词&#xff0c;突出程咬金的猛将气质与唐初甲胄细节&#xff1a; 核心提示词&#xff08;战场形象&#xff09; 中年猛将程咬金&#xff0c;全身甲胄像&#xff0c;唐初光要甲制式&#xff1a;身…

【实时Linux实战系列】实时数据流处理框架分析

背景与重要性在当今数字化时代&#xff0c;数据的实时处理变得至关重要。无论是金融交易、工业自动化还是物联网&#xff08;IoT&#xff09;设备&#xff0c;都需要能够快速处理和响应数据流&#xff0c;以确保系统的高效运行和决策的及时性。实时Linux操作系统因其低延迟和高…

一周学会Matplotlib3 Python 数据可视化-Hello World编写

锋哥原创的Matplotlib3 Python数据可视化视频教程&#xff1a; 2026版 Matplotlib3 Python 数据可视化 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili Matplotlib3简介 Matplotlib 是 Python 最流行的数据可视化库之一&#xff0c;广泛应用于科学计算、数据分析、科研绘…

中国MCP市场:腾讯、阿里、百度的本土化实践

中国MCP市场&#xff1a;腾讯、阿里、百度的本土化实践 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般绚烂的技术栈中&#xff0c;我是那个永不停歇的色彩收集者。 &#x1f98b; 每一个优化都是我培育的花朵&#xff0c;每一个特性都是我放飞的…

房产证识别在房产行业的技术实现及应用原理

技术实现1. 图像采集与预处理图像获取&#xff1a;通过高分辨率扫描仪或手机摄像头获取房产证图像预处理技术&#xff1a;去噪处理&#xff08;消除扫描噪声&#xff09;图像增强&#xff08;提高对比度&#xff09;倾斜校正&#xff08;自动旋转至正确角度&#xff09;二值化处…