当我尝试安装ruby gem json 1.8.3
时,我看到类似于C编译器错误的内容这是我正在运行的命令:
gem install json -v '1.8.3'
我的输出是:
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/ruby-2.2.1/bin/ruby -r ./siteconf20160327-27188-189i1cj.rb extconf.rb
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.so
/usr/bin/ld: BFD (GNU Binutils for Debian) 2.22 internal error, aborting at ../../bfd/reloc.c line 443 in bfd_get_reloc_size
/usr/bin/ld: Please report this bug.
collect2: error: ld returned 1 exit status
make: *** [generator.so] Error 1
make failed, exit code 2
Gem files will remain installed in /usr/local/rvm/gems/ruby-2.2.1/gems/json-1.8.3 for inspection.
Results logged to /usr/local/rvm/gems/ruby-2.2.1/extensions/x86_64-linux/2.2.0/json-1.8.3/gem_make.out
我尝试删除并安装软件包 binutils 和 build-essential ,但这并没有解决问题。
关于我的操作系统的一些事实:
Debian GNU/Linux 7.9 (wheezy)
uname -a显示:
Linux Prometheus 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64 GNU/Linux
我在OpenVZ虚拟化VPS主机上运行它。
我的/etc/apt/sources.list(如果有帮助):
deb http://ftp.debian.org/debian wheezy main contrib non-free
deb http://security.debian.org wheezy/updates main contrib non-free
deb http://packages.icinga.org/debian icinga-wheezy main
deb http://http.debian.net/debian wheezy-backports main
deb-src http://packages.icinga.org/debian icinga-wheezy main
Google为
生成零相关结果BFD (GNU Binutils for Debian) 2.22 internal error, aborting at ../../bfd/reloc.c line 443 in bfd_get_reloc_size
如果我因为链接器错误而无法“制作”json gem,请告诉我正确的方向去,也许我可以用另一个版本替换编译器/链接器,或者以某种方式避免在这里安装源代码?一般来说,任何解决方案一旦有助于安装json gem并继续我的计划,就会受到欢迎。
提前非常感谢!
答案 0 :(得分:4)
安装较新版本的binutils为我解决了这个问题。
根据Alxs的建议,我安装了binutils 2.26-8。我不得不添加这一行:
deb http://ftp.de.debian.org/debian sid main
到我的/etc/apt/sources.list
,然后我跑了
apt-get update
apt-get install binutils
哪个更新了binutils到2.26
然后我又跑了:
gem install json -v '1.8.3'
这次进展顺利。
重要提示:不要忘记删除此行:
deb http://ftp.de.debian.org/debian sid main
完成后从您的/etc/apt/sources
。列表中,否则您将从现在开始继续从sid
repo安装未来的软件包,这可能不是您需要的。
答案 1 :(得分:4)
尝试使用2.25或2.26 Binutils,因为你的2.22版本已经很老了。