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

f87krz0w  于 12个月前  发布在  Ruby
关注(0)|答案(1)|浏览(88)

我正在尝试在树莓派4上安装ruby 3.2.2。我使用GitHub存储库,git clone方法执行了所有步骤,但当我到达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。

33qvvth1

33qvvth11#

您可能正在64位内核上运行32位用户界面,而构建脚本从uname -a中选择了错误的架构。将arch显式地设置为32位可以使构建脚本选择正确的值。

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

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

相关问题