51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Linux 系统上交叉编译 Redis 并打包成 tar.gz,适用于多架构平台

前言 {#%E5%89%8D%E8%A8%80}

Redis 是一个流行的内存数据库,广泛用于缓存和消息队列。为了便于在不同架构的 Linux 系统上部署 Redis,我们可以通过交叉编译来生成适用于不同平台的可执行文件,并打包为 .tar.gz 以便分发和直接使用。本文将介绍如何在任何 Linux 系统上交叉编译 Redis,支持多种平台架构,包括 ARM、AArch64 等。


安装编译工具 {#%E5%AE%89%E8%A3%85%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7}

在开始编译之前,需要安装基本的编译工具和依赖。根据你使用的 Linux 发行版,以下是不同系统的安装命令:

  • Debian/Ubuntu

    sudo apt update
    sudo apt install build-essential tcl curl -y
    

  • CentOS/RHEL

    sudo yum groupinstall "Development Tools" -y
    sudo yum install tcl curl -y
    

  • Fedora

    sudo dnf groupinstall "Development Tools" -y
    sudo dnf install tcl curl -y
    

  • Arch Linux

    sudo pacman -S base-devel tcl curl
    

这些命令会安装 GNU 编译器、make 工具以及 Redis 编译所需的 tcl 工具。


下载 Redis 源码 {#%E4%B8%8B%E8%BD%BD-redis-%E6%BA%90%E7%A0%81}

在安装了编译工具后,你可以下载 Redis 的最新源码包,本文以7.4.1为例,在终端中运行以下命令:

curl -O http://download.redis.io/releases/redis-7.4.1.tar.gz

下载完成后,解压源码包:

tar -xzf redis-7.4.1.tar.gz
cd redis-7.4.1

可在http://download.redis.io/releases/ 找到所需要的版本替换下载命令

2024-10-23-rbqwpzgc.webp

编译 Redis {#%E7%BC%96%E8%AF%91-redis}

在通用的 x86_64 架构上,直接编译 Redis 的过程非常简单。进入源码目录后,运行以下命令:

make

2024-10-23-zozbltaj.webp

如果你有多个 CPU 核心,可以使用并行编译加速编译过程:

make -j$(nproc)

编译成功后,你可以通过 src/redis-server --version 检查 Redis 是否成功编译。

交叉编译 Redis(多架构支持) {#%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91-redis%EF%BC%88%E5%A4%9A%E6%9E%B6%E6%9E%84%E6%94%AF%E6%8C%81%EF%BC%89}

如果你需要在其他架构(如 ARM、AArch64)上运行 Redis,可以通过交叉编译来生成适用于特定平台的二进制文件。

1. 安装交叉编译工具链 {#1.-%E5%AE%89%E8%A3%85%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E5%B7%A5%E5%85%B7%E9%93%BE}

首先,安装对应的交叉编译工具链。根据目标架构的不同,安装以下工具:

  • ARM 64 位 (AArch64)

    • Debian/Ubuntu:

      sudo apt install gcc-aarch64-linux-gnu
      


    • CentOS/Fedora/RHEL:

      sudo yum install gcc-aarch64-linux-gnu
      


    • Arch Linux:

      sudo pacman -S aarch64-linux-gnu-gcc
      


  • ARM 32 位 (ARMHF)

    • Debian/Ubuntu:

      sudo apt install gcc-arm-linux-gnueabihf
      


    • CentOS/Fedora/RHEL:

      sudo yum install gcc-arm-linux-gnueabihf
      

    • Arch Linux:

      sudo pacman -S arm-linux-gnueabihf-gcc
      


  • MIPS 架构

    • Debian/Ubuntu:

      sudo apt install gcc-mips-linux-gnu
      


    • CentOS/Fedora/RHEL:

      sudo yum install gcc-mips-linux-gnu
      


2. 使用交叉编译生成不同架构的 Redis {#2.-%E4%BD%BF%E7%94%A8%E4%BA%A4%E5%8F%89%E7%BC%96%E8%AF%91%E7%94%9F%E6%88%90%E4%B8%8D%E5%90%8C%E6%9E%B6%E6%9E%84%E7%9A%84-redis}

下载并解压 Redis 源码后,使用不同的交叉编译器进行编译。例如,如果你需要为 AArch64 架构(ARM 64 位)生成 Redis:

make CC=aarch64-linux-gnu-gcc


对于 ARM 32 位

make CC=arm-linux-gnueabihf-gcc


类似的,对于 MIPS 架构:

make CC=mips-linux-gnu-gcc


通过这样设置编译器,你可以生成适用于不同平台的二进制文件。

3. 检查编译结果 {#3.-%E6%A3%80%E6%9F%A5%E7%BC%96%E8%AF%91%E7%BB%93%E6%9E%9C}

交叉编译完成后,你可以使用 file 命令来检查生成的二进制文件的架构:

file src/redis-server


输出结果应类似于:

src/redis-server: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, ...


此命令可以帮助你确认生成的可执行文件是否为目标架构。


打包 Redis 为 .tar.gz {#%E6%89%93%E5%8C%85-redis-%E4%B8%BA-.tar.gz}

编译完成后,我们可以将 Redis 可执行文件和配置文件打包,以便在其他机器上直接解压使用。

首先,创建一个新的目录来存放编译后的 Redis 可执行文件和配置文件:

mkdir -p redis-7.4.1-dist/bin mkdir -p redis-7.4.1-dist/conf


将编译生成的可执行文件复制到 bin 目录:

cp src/redis-server src/redis-cli src/redis-benchmark src/redis-check-aof src/redis-check-rdb redis-7.4.1-dist/bin/


复制默认的 redis.conf 配置文件到 conf 目录:

cp redis.conf redis-7.4.1-dist/conf/


最后,将 redis-7.4.1-dist 目录打包成 .tar.gz 文件:

tar -czvf redis-7.4.1-dist.tar.gz redis-7.4.1-dist


现在你已经生成了一个打包的 Redis 版本,方便在其他机器上解压并直接使用。


在其他机器上解压并运行 Redis {#%E5%9C%A8%E5%85%B6%E4%BB%96%E6%9C%BA%E5%99%A8%E4%B8%8A%E8%A7%A3%E5%8E%8B%E5%B9%B6%E8%BF%90%E8%A1%8C-redis}

2024-10-23-zuhimcqd.webp

将生成的 .tar.gz 文件复制到目标机器后,解压并运行 Redis:

tar -xzf redis-7.4.1-dist.tar.gz cd redis-7.4.1-dist ./bin/redis-server ./conf/redis.conf


通过 redis-cli,你可以与 Redis 服务器进行交互:

./bin/redis-cli


总结 {#%E6%80%BB%E7%BB%93}

通过本文介绍的步骤,你可以在任何 Linux 系统上编译 Redis,并且通过交叉编译生成适用于不同架构(如 ARM 和 MIPS)的二进制文件。这种方法特别适用于需要在多平台部署 Redis 的场景,通过打包成 .tar.gz,你可以轻松复制到其他机器上进行解压和使用。


下载 {#%E4%B8%8B%E8%BD%BD}

本文示例中编译好的 x86_64 redis7.4.1下载

https://wangxy.lanzn.com/iZmBy2d6motc
密码:g0qb


赞(0)
未经允许不得转载:工具盒子 » Linux 系统上交叉编译 Redis 并打包成 tar.gz,适用于多架构平台