If you have problems installing a gem and get a error collect2: error: ld returned 1 exit status
it's due to missing development headers of a library (ld
is the linker).
For example, with this output:
$ gem install json
Building native extensions. This could take a while...
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
/home/foobar/.rvm/rubies/ruby-2.2.3/bin/ruby -r ./siteconf20150915-3539-1i9layj.rb extconf.rb
creating Makefile
make "DESTDIR=" clean
make "DESTDIR="
compiling generator.c
linking shared-object json/ext/generator.so
/usr/bin/ld: cannot find -lgmp
collect2: error: ld returned 1 exit status
make: *** [generator.so] Error 1
make failed, exit code 2
Gem files will remain installed in /home/foobar/.rvm/gems/ruby-2.2.3/gems/json-1.8.3 for inspection.
Results logged to /home/foobar/.rvm/gems/ruby-2.2.3/extensions/x86_64-linux/2.2.0/json-1.8.3/gem_make.out
You can see the linker can't find gmp
(/usr/bin/ld: cannot find -lgmp
).
Solution:
search for library with gmp
in it:
$ apt-cache search gmp
libgmp-dev - Multiprecision arithmetic library developers tools
libgmp10 - Multiprecision arithmetic library
libgmp10-doc - Multiprecision arithmetic library example code
libgmp3-dev - Multiprecision arithmetic library developers tools
libgmpxx4ldbl - Multiprecision arithmetic library (C++ bindings)
[...]
check if you have installed the development package (packages with -dev
in the name):
$ dpkg -l | grep gmp`
ii libgmp10:amd64 2:5.1.3+dfsg-1ubuntu1 amd64 Multiprecision arithmetic library
If the ...-dev
packages are not in the list, install them with sudo apt-get install libgmp-dev libgmp3-dev
and after that the gem install json
should work.
Posted by Kim Klotz to makandra dev (2015-09-15 09:17)