have_header 来自 mkmf 在 Jruby 中抛出错误
have_header from mkmf throws an error in 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 版本:
[abd@abd 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 并且由于相同的错误无法构建本机扩展,我知道 gem 未维护但我想解决无论如何,这个问题是因为上面的消息表明我的安装不足。
顺便说一句,我有 jdk,而不仅仅是 jre。
JRuby C 扩展已被弃用[并且可能已经被删除,但我有点不知所措]。
由于您 运行 在 JVM 上,您是否考虑过替代方案?即,如果性能足以满足您的需求,则使用 Java 的 BigInteger
或 BigDecimal
,或者使用 JNI / JNA 包装 GMP - 它看起来像 somebody has tried already. Check out this SO 问题还有一些 Java 个选择。
我有这个测试代码:
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 版本:
[abd@abd 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 并且由于相同的错误无法构建本机扩展,我知道 gem 未维护但我想解决无论如何,这个问题是因为上面的消息表明我的安装不足。
顺便说一句,我有 jdk,而不仅仅是 jre。
JRuby C 扩展已被弃用[并且可能已经被删除,但我有点不知所措]。
由于您 运行 在 JVM 上,您是否考虑过替代方案?即,如果性能足以满足您的需求,则使用 Java 的 BigInteger
或 BigDecimal
,或者使用 JNI / JNA 包装 GMP - 它看起来像 somebody has tried already. Check out this SO 问题还有一些 Java 个选择。