【问题标题】:Jruby 1.6 added support for c native extension, but how do you build gems with c extensions?Jruby 1.6 增加了对 c 原生扩展的支持,但是如何使用 c 扩展构建 gems?
【发布时间】:2011-11-10 08:13:13
【问题描述】:

是的,差不多。在 windows xp sp3 上。会发生这种情况:

jruby -S gem install a_gem_with_c_extensions

未能构建 a_gem_with_c_extensions

找不到make命令

我需要 cygwin、mingw、ruby dev-kit 吗?

为什么没有记录?原生扩展支持功能已经推出 7 个月了,但没有人写过一句话来教如何设置它?

【问题讨论】:

  • 在投票之前阅读我自己的答案...如果不清楚,我删除“devkit”文件夹的原因(在运行“dk.rb init”和“dk.rb install”之后)是我认为这两个命令已将编译环境复制到 ruby​​ 路径的子文件夹中,因此不再需要原始文件夹。我不喜欢在我的高清上保持混乱,据我所知,devkit 安装输出消息在这个意义上也是误导性的,告诉类似“DevKit 已安装”而不是更合适的消息,如“DevKit环境文件夹已配置”。

标签: windows makefile jruby native


【解决方案1】:

您需要一个功能构建环境来编译 C 扩展。您所需要的将取决于您正在构建的 C 扩展。我会先安装 Cygwin 并设置好它。您可能还需要注意,根据他们的wiki page,JRuby 中的 C 扩展支持仍被认为是实验性的,因此您尝试构建的扩展可能有效,也可能无效。

或者看这里,似乎 DevKit 是在 Windows 上构建 C 扩展的首选方法:

"JRuby, Windows, and C Extensions" - 看起来不错,但现在已经一岁了。

也看看"JRuby-on-Windows C extension building"

【讨论】:

  • 是的,devkit 是 Windows 上的首选方法,但我犯了一个错误,导致 devkit 安装损坏。我的“自我回答”中的详细信息:)
【解决方案2】:

我终于发现我做错了什么:

当然,在 Windows 上最简单的方法是使用 ruby​​ devkit,但我在按照安装说明操作时做错了:

  1. 从这里下载当前的 DevKit-tdm-...-sfx.exe 文件。
  2. 运行自解压可执行文件并选择将其解压到 C:\RubyDevKit。
  3. 提取完成后,打开 Ruby 命令提示符并导航到 C:\RubyDevKit。
  4. 运行以下命令:

ruby dk.rb 初始化

ruby dk.rb 安装

我当时完全按照上面的方法做了,但是后来我错误地认为不再需要 C:\RubyDevKit 并删除了整个文件夹,从而导致 gem devkit 脚本无法找到“make " 命令,位于 C:\RubyDevKit\bin

这样修复它:再次执行上述所有步骤,但在最后一个命令上使用 --force 选项:ruby dk.rb install --force

哦,以后不要删除 C:\RubyDevKit* :)

希望这可以帮助某人:)

【讨论】:

    猜你喜欢
    • 2013-03-25
    • 1970-01-01
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-21
    • 2012-08-02
    • 2023-03-29
    相关资源
    最近更新 更多