2016-12-22 35 views
0

我有这样的测试代码:have_header抛出一个错误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

我不知道这是什么意思开发工具,我搜索了互联网,但没有发现任何关于此的信息

我通过RVM安装的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宝石和原生扩展不会因为相同的错误生成,我知道宝石是无法维护,但我想解决这个问题,因为上述消息表明我的安装缺乏。

顺便说一下,我有jdk,而不仅仅是jre。

回答

0

JRuby C扩展已被弃用[可能已被删除,但我有点不在循环]。

由于您在JVM上运行,您是否考虑过替代方案?即使用Java的BigIntegerBigDecimal(如果性能足够满足您的需求),或者使用JNI/JNA包装GMP,它看起来已经是somebody has tried。查看this SO问题了解更多Java替代方法。