我试图在运行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 "
+
我是所有这一切的初学者,所以任何帮助都将不胜感激。感谢。
答案 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。
这并不像默默无闻的回答那么全面,可能会破坏你的解决方案。如果不仔细考虑,请不要更改锁定的版本字符串。