我在玩 Rubygame。我用 Mac Pack 安装了它,现在我有了 rsdl 可执行文件。rsdl game.rb
工作正常,但是当我 chmod +x rb 文件时,将 shebang 添加到 rsdl(尝试直接路径和 /usr/bin/env rsdl)并尝试执行它(./game.rb
),它开始在终端和 rsdl 之间闪烁试图打开,最终放弃并给出了一个bus error
。有谁知道是什么原因造成的?如果它有所作为,我会使用 Snow Leopard (10.6.2)。
谢谢。
我相信这是嵌入式红宝石的问题。Ruby 有一个可怕的 hack 来处理 shebang 执行,它本质上是在可执行文件名(即 argv[0])中寻找“ruby”。如果您的嵌入式 ruby 可执行文件的名称中没有“ruby”,则此 hack 将失败,并且您将获得一个无限循环(如果您重命名它,即使使用股票 ruby 也会发生这种情况)。假设这里是这种情况,您可以将符号链接或 mv rsdl 链接到 rsdl-ruby(或类似的),将您的 shebang 更改为#!/usr/bin/env rsdl-ruby
它会起作用。
rsdl 期望您从哪里执行(即从可执行文件,而不是游戏文件)可能存在问题。我会发现的方法是打开 rsdl 可执行文件(假设它只是一个 ruby 脚本),然后在里面四处寻找。我认为了解您为什么尝试从 ruby 脚本独立执行也会很有用。