Instalação de gem com “O compilador falhou ao gerar um arquivo executável” no cygwin

3

Tentando instalar várias gemas em cygwin , continuo recebendo este erro: /usr/share/ruby/2.2.0/mkmf.rb:456:in try_do': The compiler failed to generate an executable file. (RuntimeError)

Este erro faz parte da mensagem de erro completa abaixo:

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/bin/ruby.exe -r ./siteconf20150603-27012-w371hi.rb extconf.rb
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        [...truncated...]
        --without-pkg-config
/usr/share/ruby/2.2.0/mkmf.rb:456:in 'try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
        from /usr/share/ruby/2.2.0/mkmf.rb:541:in 'try_link0'
        from /usr/share/ruby/2.2.0/mkmf.rb:556:in 'try_link'
        from /usr/share/ruby/2.2.0/mkmf.rb:637:in 'try_ldflags'
        from /usr/share/ruby/2.2.0/mkmf.rb:1780:in 'pkg_config'
        from extconf.rb:15:in '<main>'

extconf failed, exit code 1

Gem files will remain installed in /cygdrive/d/d/.gem/ruby/gems/ffi-1.9.8 for inspection.
Results logged to /cygdrive/d/d/.gem/ruby/extensions/x86_64-cygwin/ffi-1.9.8/gem_make.out

Eu tentei todas as coisas que encontrei no google, das quais algumas realmente funcionam, incluindo:

  • Instalando o pacote cygwin correspondente à gem através da configuração do cygwin
  • Instalando mais pacotes do cygwin, dependendo da gem com falha

Mas, para este exemplo muito específico, não encontrei o que estava faltando ...

    
por Camusensei 03.06.2015 / 11:40

1 resposta

7

A solução para este erro foi (e é para todos esses erros) dar uma olhada no arquivo mkmf.log (para mim, /cygdrive/d/d/Documents/.gem/ruby/extensions/x86_64-cygwin/ffi-1.9.8/mkmf.log ) e ver quais bibliotecas estão faltando.

No meu caso, -lcrypt e -lgmp estavam falhando, então eu tive que "cygwin-setup" libcrypt-devel e libgmp-devel .

    
por 03.06.2015 / 11:48