Ruby 为什么在32位Linux上需要从Rust编译的共享对象时会出现编码错误?

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

背景:我正在使用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\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
但是Helix自述文件中推荐的版本也存在同样的问题,尽管编译为32位而不是64位

  • 螺旋线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虚拟机上重现。