2016-12-22 15 views
0

У меня есть тестовый код:have_header из mkmf выдает ошибку в JRuby

require 'mkmf' 

puts have_header("iostream.h") 

этот код выдает ошибку в JRuby так:

checking for iostream.h... RuntimeError: The compiler failed to generate an executable file. You have to install development tools first.

try_do at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:456 try_cpp at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:587
block in have_header at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:1091
block in checking_for at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:942 block in postpone at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:350 open at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:320 block in postpone at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:350 open at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:320 postpone at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:346 checking_for at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:941 have_header at /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:1090 at test.rb:3

Я понятия не имею, что это значит по инструменты для разработки, и я искал в Интернете, не найдя ничего об этом.

Я установил JRuby 9.1.6.0 через РВМ, это моя версия Java:

[[email protected] testruby]$ java -version 
openjdk version "1.8.0_112" 
OpenJDK Runtime Environment (build 1.8.0_112-b15) 
OpenJDK 64-Bit Server VM (build 25.112-b15, mixed mode) 

Я использую Arch Linux здесь.

Настоящая причина моего вопроса заключается в том, что я попытался установить gmp gem, а собственные расширения не будут построены из-за той же ошибки, я знаю, что драгоценный камень не поддерживается, но я все равно хочу решить эту проблему, потому что вышеприведенное сообщение предполагает, что моя установка отсутствует.

Кстати, у меня есть jdk, а не только jre.

ответ

0

Расширения JRuby C устарели [и, возможно, удалены уже, но я немного вышел из цикла].

Поскольку вы работаете на JVM, рассмотрели ли вы альтернативы? например, использовать Java BigInteger или BigDecimal, если производительность соответствует вашим потребностям, или обернуть GMP с помощью JNI/JNA - он уже выглядит как somebody has tried. Отъезд this SO вопрос для еще нескольких альтернатив Java.