You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4用rbenv安装Ruby 3.2.2失败求助(ARM架构兼容问题)

树莓派4(aarch64)rbenv安装Ruby 3.2.2编译失败的解决方法

问题背景

在Raspbian 11(aarch64架构)的树莓派4上,使用rbenv安装Ruby 3.2.2时触发编译错误,报错核心为coroutine/arm64/Context.S文件中的ARM64指令无法被当前工具链识别,最终导致BUILD FAILED。

关键错误日志

pi@raspberrypi:~ $ rbenv install 3.2.2
# ...省略下载步骤...
BUILD FAILED (Raspbian 11 using ruby-build 20230717-7-gf170c16)

Last 10 log lines:
coroutine/arm64/Context.S:56: Error: bad instruction `ldp x21,x22,[sp,0x50]'
coroutine/arm64/Context.S:57: Error: bad instruction `ldp x23,x24,[sp,0x60]'
coroutine/arm64/Context.S:69: Error: bad instruction `ret x4'
make: *** [Makefile:468: coroutine/arm64/Context.o] Error 1

系统与工具链信息

  • 系统架构:aarch64(uname -m输出)
  • 当前工具链:arm-linux-gnueabihf-gcc(目标架构为32位ARMv7,与aarch64不兼容)

问题原因

当前使用的arm-linux-gnueabihf-gcc是针对32位ARMv7的编译工具链,而Ruby 3.2.2针对aarch64架构生成了64位ARM汇编代码,工具链无法识别64位指令,导致编译失败。

解决步骤

  1. 替换为aarch64专用工具链
    卸载32位ARM工具链,安装适配64位aarch64的工具链:

    sudo apt remove gcc-arm-linux-gnueabihf
    sudo apt update
    sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
    
  2. 指定正确工具链执行安装
    临时设置环境变量后执行安装,或直接在命令中指定工具链:

    # 方式1:设置环境变量
    export CC=aarch64-linux-gnu-gcc
    export CXX=aarch64-linux-gnu-g++
    rbenv install 3.2.2
    
    # 方式2:直接在命令中指定
    CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ rbenv install 3.2.2
    
  3. 清理编译残留(可选)
    如果之前的编译缓存存在干扰,可删除ruby-build的临时工作目录:

    rm -rf /tmp/ruby-build.*
    
  4. 验证安装结果
    安装完成后切换Ruby版本并验证:

    rbenv global 3.2.2
    ruby -v
    

    成功输出应为:ruby 3.2.2 (2023-03-30 revision e51014f9c0) [aarch64-linux]


内容的提问来源于stack exchange,提问作者Ese10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 03:05:55