由于编译Unf_ext'时出错,无法捆绑安装

时间:2016-10-07 16:33:20

标签: ruby-on-rails ruby compiler-errors raspberry-pi debian

我试图在运行Debian Jesse(手臂)的树莓派3上安装Huginn。尝试安装unf_ext时,Bundle安装失败:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /tmp/bundler20161007-16062-unp7l7unf_ext-0.0.7.1/gems/unf_ext-0.0.7.1/ext/unf_ext
/usr/bin/ruby2.3 -r ./siteconf20161007-16062-wdgukt.rb extconf.rb

当我尝试:sudo gem install unf_ext -v' 0.0.7.1'我收到以下错误:

current directory: /tmp/bundler20161007-16062-unp7l7unf_ext-0.0.7.1/gems/unf_ext-0.0.7.1/ext/unf_ext
make "DESTDIR="
compiling unf.cc
In file included from unf/normalizer.hh:10:0,
             from unf.cc:1:

unf/table.hh:13539:25: error: narrowing conversion of ‘-27’ from ‘int’ to ‘char’ inside { } [-Wnarrowing]
  -77, -39,-124, -39,-123};

上面是一个很长的错误列表:缩小##从int到char里面的转换{} [-Wnarrowing]错误

我正在编译:6.1.1 20160802(Raspbian 6.1.1-11 + rpi1)

我尝试过gem更新,但这并没有帮助。也没有在ext / unf_ext / extconf.rb

中添加标志
+$CXXFLAGS += " -fsigned-char "
+

我是所有这一切的初学者,所以任何帮助都将不胜感激。感谢。

2 个答案:

答案 0 :(得分:2)

注意:我published my gem on Github为了节省人们自己创造的努力。如果你想使用我的,那么只需运行这两个命令:

wget https://github.com/appleorange1/unf_ext-0.0.6-arm/raw/master/unf_ext-0.0.6.gem
gem install ./unf_ext-0.0.6.gem

如果您想了解我是如何做到的,请继续阅读:

我也遇到过这个问题(在Chromebook C201PA上)。问题是当你运行" gem install"时,你对ext / unf_ext / extconf.rb的更改会被覆盖。我不确定为什么会这样,但我通过创建一个本地宝石解决了这个问题。

为此,请从this page下载所需的上游gem版本。我使用的是版本0.0.6。

然后,解压缩上游gem:

gem unpack unf_ext-0.0.6.gem

在您提取上游宝石后,将其重命名,以免您将其与当地宝石混淆。 (你不必这样做;这只是一个建议。)

mv unf_ext-0.0.6.gem unf_ext-0.0.6-upstream.gem

现在,进入解压缩的宝石。

cd unf_ext-0.0.6

然后,将行$CXXFLAGS += ' -fsigned-char'添加到文件ext/unf_ext/extconf.rb。 (我把它放在第三行,就在have_library('stdc++')下面。)

vi ext/unf_ext/extconf.rb

然后,您可以构建并安装gem:

gem build unf_ext.gemspec
gem install ./unf_ext-0.0.6.gem

答案 1 :(得分:0)

我在Rails项目中捆绑的更高版本的Gemfile.lock出现了类似的错误:

bundle install

其中:

gem install unf_ext -v '0.0.7.2'

我能够修改Gemfile.lock并将unf_ext版本更改为0.0.7.4; unf_ext库已于2017年4月更新,包括ARM处理器支持。阅读GitHub问题here

这并不像默默无闻的回答那么全面,可能会破坏你的解决方案。如果不仔细考虑,请不要更改锁定的版本字符串。