Ruby 为什么在32位Linux上需要从Rust编译的共享对象时会出现编码错误?
背景:我正在使用Rust编写Ruby的本机扩展。在我的64位MacBook Pro上,一切正常,我在32位Linux机器(i686未知Linux gnu)上遇到了这个问题。无论源代码中的代码如何,问题都会出现 共享对象可以很好地编译,但是如果我试图要求它,我总是会得到如下错误:Ruby 为什么在32位Linux上需要从Rust编译的共享对象时会出现编码错误?,ruby,rust,ffi,Ruby,Rust,Ffi,背景:我正在使用Rust编写Ruby的本机扩展。在我的64位MacBook Pro上,一切正常,我在32位Linux机器(i686未知Linux gnu)上遇到了这个问题。无论源代码中的代码如何,问题都会出现 共享对象可以很好地编译,但是如果我试图要求它,我总是会得到如下错误: `require':编码US-ASCII时的符号无效:“(}\xC3\xBFtO\xEE\xB7\xE0\xEBi\x01\xAC\xC3\xBF\x18。\x8D\xB5\xC6\xC0\x89\xB5\xFD\xF1
`require':编码US-ASCII时的符号无效:“(}\xC3\xBFtO\xEE\xB7\xE0\xEBi\x01\xAC\xC3\xBF\x18。\x8D\xB5\xC6\xC0\x89\xB5\xFD\xF1\x8B\x85\x8B\x91\x01\x18。\x8D\xB5\xB7\xC0\x89\xB5\xb0\xC3\xBF\xFA\xbc\xbc\xbc\xbck”(编码错误)
在不同的Ruby调用中,当我需要文件时,错误消息中的二进制字符串是不同的,这让我更加困惑
复制步骤(必选:、生锈、红宝石、捆绑机):
注意:我正在使用
- 螺旋线0.7.5
- 货运1.30.0(a1a4ad372 2018-11-02)
- rustc 1.30.1(1433507eb 2018-11-07)
- ruby 2.6.0p0(2018-12-25修订版66547)[i686 linux]
- 捆绑包版本1.17.2
- 螺旋线0.7.5
- 货运0.18.0(fe7b0cdcf 2017-04-24)
- rustc 1.17.0(56124baa9 2017-04-24)
- ruby 2.4.1p111(2017-03-22修订版58053)[i686 linux]
- 捆绑包版本1.14.6
mkdir repro
光盘复制/
束初始化
echo“gem”helix rails“>Gemfile
捆
螺旋引导示例
cd示例
bundle-exec-rake构建
bundle exec ruby lib/example.rb
我也打开了。您正在传递声称是通过美国ASCII编码的数据,但事实并非如此。值得注意的是,这不会在64位Ubuntu Linux虚拟机上重现,但会在32位Ubuntu Linux虚拟机上重现。