Rbenv 构建失败(Raspbian 11 使用 ruby-build 20230717-7-gf170c16)

问题描述 投票:0回答:1

我正在尝试在树莓派 4 上安装 ruby 3.2.2。我使用 GitHub 存储库、git 克隆方法遵循了所有步骤,但是当我到达

rbenv install 3.2.2
时,我得到了我认为是 ARM 相关错误的信息说道:

日志

pi@raspberrypi:~ $ rbenv install 3.2.2
To follow progress, use 'tail -f /tmp/ruby-build.20230804022323.9672.log' or pass --verbose
Downloading ruby-3.2.2.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz
Installing ruby-3.2.2...

BUILD FAILED (Raspbian 11 using ruby-build 20230717-7-gf170c16)

Inspect or clean up the working tree at /tmp/ruby-build.20230804022323.9672.8D2OlO
Results logged to /tmp/ruby-build.20230804022323.9672.log

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:58: Error: bad instruction `ldp x25,x26,[sp,0x70]'
coroutine/arm64/Context.S:59: Error: bad instruction `ldp x27,x28,[sp,0x80]'
coroutine/arm64/Context.S:60: Error: bad instruction `ldp x29,x30,[sp,0x90]'
coroutine/arm64/Context.S:63: Error: ARM register expected -- `ldr x4,[sp,0xa0]'
coroutine/arm64/Context.S:66: Error: shift expression expected -- `add sp,sp,0xb0'
coroutine/arm64/Context.S:69: Error: bad instruction `ret x4'
make: *** [Makefile:468: coroutine/arm64/Context.o] Error 1
make: *** Waiting for unfinished jobs....

我发现这与尝试在aarch64(我正在使用的)上安装armv7有关。所以我查了一些相关的东西并得到了这个信息:

用户构建

pi@raspberrypi:~ $ uname -m
aarch64

工具链

pi@raspberrypi:~ $ gcc -v
...
Target: arm-linux-gnueabihf
...

确保工具链在我的

system path

pi@raspberrypi:~ $ which arm-linux-gnueabihf-gcc
/usr/bin/arm-linux-gnueabihf-gcc

确认这些信息后,我尝试像这样安装它:

pi@raspberrypi1:~ $ CC=arm-linux-gnueabihf-gcc rbenv install 3.2.2
To follow progress, use 'tail -f /tmp/ruby-build.20230804035531.14026.log' or pass --verbose
Downloading ruby-3.2.2.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz
Installing ruby-3.2.2...

BUILD FAILED (Raspbian 11 using ruby-build 20230717-7-gf170c16)

Inspect or clean up the working tree at /tmp/ruby-build.20230804035531.14026.Mf7gAz
Results logged to /tmp/ruby-build.20230804035531.14026.log

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:58: Error: bad instruction `ldp x25,x26,[sp,0x70]'
coroutine/arm64/Context.S:59: Error: bad instruction `ldp x27,x28,[sp,0x80]'
coroutine/arm64/Context.S:60: Error: bad instruction `ldp x29,x30,[sp,0x90]'
coroutine/arm64/Context.S:63: Error: ARM register expected -- `ldr x4,[sp,0xa0]'
coroutine/arm64/Context.S:66: Error: shift expression expected -- `add sp,sp,0xb0'
coroutine/arm64/Context.S:69: Error: bad instruction `ret x4'
make: *** [Makefile:468: coroutine/arm64/Context.o] Error 1
make: *** Waiting for unfinished jobs....

失败后,我尝试了另一种方法:

pi@raspberrypi:~ $ export CC=arm-linux-gnueabihf-gcc
pi@raspberrypi:~ $ rbenv install 3.2.2
To follow progress, use 'tail -f /tmp/ruby-build.20230804040854.7501.log' or pass --verbose
Downloading ruby-3.2.2.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz
Installing ruby-3.2.2...

BUILD FAILED (Raspbian 11 using ruby-build 20230717-7-gf170c16)

Inspect or clean up the working tree at /tmp/ruby-build.20230804040854.7501.FKpHuL
Results logged to /tmp/ruby-build.20230804040854.7501.log

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:58: Error: bad instruction `ldp x25,x26,[sp,0x70]'
coroutine/arm64/Context.S:59: Error: bad instruction `ldp x27,x28,[sp,0x80]'
coroutine/arm64/Context.S:60: Error: bad instruction `ldp x29,x30,[sp,0x90]'
coroutine/arm64/Context.S:63: Error: ARM register expected -- `ldr x4,[sp,0xa0]'
coroutine/arm64/Context.S:66: Error: shift expression expected -- `add sp,sp,0xb0'
coroutine/arm64/Context.S:69: Error: bad instruction `ret x4'
make: *** [Makefile:468: coroutine/arm64/Context.o] Error 1
make: *** Waiting for unfinished jobs....

这也失败了,现在我不知道如何使用 rbenv 安装 ruby。

ruby gcc raspberry-pi arm rbenv
1个回答
0
投票

您可能在 64 位内核上运行 32 位用户区,并且构建脚本从

uname -a
选择了错误的架构。将 arch 明确设置为 32 位可以使构建脚本选择正确的。

setarch armv7l bash  # child shell now reports 32bit arch
rbenv install 3.2.2 # in the child shell

仅安装本身需要显式拱形设置。

© www.soinside.com 2019 - 2024. All rights reserved.