【问题标题】:have_header from mkmf throws an error in Jruby来自 mkmf 的 have_header 在 Jruby 中引发错误
【发布时间】:2016-12-22 09:59:12
【问题描述】:

我有这个测试代码:

require 'mkmf'

puts have_header("iostream.h")

此代码在 Jruby 中引发如下错误:

检查 iostream.h... RuntimeError: 编译器未能生成可执行文件。您必须先安装开发工具。

try_do 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:456 try_cpp 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:587
在 have_header 中阻止 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:1091
在检查_for 中阻止 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:942 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:350 阻止延迟 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:320 打开 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:350 阻止延迟 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:320 打开 推迟到 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:346 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:941 检查_for 在 /home/abd/.rvm/rubies/jruby-9.1.6.0/lib/ruby/stdlib/mkmf.rb:1090 有头文件 在 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 ruby-c-extension


    【解决方案1】:

    JRuby C 扩展已被弃用 [可能已经被删除,但我有点脱离了循环]。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-24
      • 2014-10-02
      • 1970-01-01
      • 2021-12-24
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多