【问题标题】:BUG Bus Error ruby 1.8.7BUG 总线错误 ruby​​ 1.8.7
【发布时间】:2011-10-12 01:30:51
【问题描述】:

在带有 Xcode 4.2 GM(新 MacBook)的 Lion 10.7.1 上使用 RVM 编译 Ruby 1.8.7 后出现错误。

它编译得很好,但是当我尝试安装任何 gem 时,我得到以下信息:

gem install bundler
/Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/timeout.rb:60: [BUG] Bus Error
ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.1.0]

Abort trap: 6

更新:最后我希望安装 Xcode 4.2,安装 Ruby 1.8.7、1.9.x 的 RVM 并且一切正常。

【问题讨论】:

  • This seems related - 试试他使用的修复方法?看起来像是某种根深蒂固的不兼容。

标签: ruby rubygems


【解决方案1】:

由于我必须解析其中几个答案才能使用 XCode 4.2,所以我想我应该把它们放在一起:

  1. 安装 Xcode 4.2
  2. https://github.com/kennethreitz/osx-gcc-installer 安装 gcc 独立编译器(替换 Xcode)
  3. export CC=gcc-4.2 添加到您的 ~/.bash_profile 或等效文件中(不要忘记重新加载)
  4. 运行rvm implode" then re-install rvmhttp://beginrescueend.com/

此时,我能够 rvm 安装 ruby​​-1.8.7(和 ruby​​-1.9.2),并且实际上可以安装我的 gem。

【讨论】:

  • 您还安装了 Xcode 4.2 吗?这适合安装步骤吗?
  • 它适用于我的 Lion 系统(全新安装)和 Xcode 4.2.1。但是,有人可以解释为什么这是问题吗?谢谢!
  • 你的意思是它可以在不使用 Xcode 4.2.1 的解决方法的情况下工作吗?很高兴知道。之所以出现这个问题,是因为 Apple 在 Xcode 4.2 中将默认编译器更改为纯 LLVM 编译器,并且看起来 Ruby 无法使用它正确编译。这里的默认编译器部分有更多信息:Apple Xcode 4.2 docs
  • Apple 的发行说明中解释了为什么 Xcode 4.2 不能工作: Xcode 4.2 中用于 iOS 开发的默认编译器是 LLVM 3.0。与 Xcode 4.0 中默认的 GCC 编译器和 Xcode 4.1 中的 LLVM-GCC 编译器相比,LLVM 提供了比 GCC 更好的代码生成和优化,以及比 LLVM-GCC 更新的语言支持,包括对 Objective-C 中 ARC 的支持对于新的 C++ 标准,C++0x 本质上,Xcode 4.2 中的新编译器与以前的版本没有相同的 GCC 编译器,并且 Ruby 1.9.2+ 使用仅 LLVM 的编译器阻塞。
【解决方案2】:

因此,核对 RVM (rvm implode) 并重新安装没有任何区别。我最终安装了 Xcode 4.2,然后安装了 GCC 编译器,之后覆盖了 Xcode 编译器。

以下是谷歌搜索的步骤。

  1. 安装 Xcode 4.2.x

  2. https://github.com/kennethreitz/osx-gcc-installer 安装 GCC 独立编译器

    注意:Xcode 4.3 测试版最近发布。我正在测试这是否能解决编译问题。

【讨论】:

  • 我有 Xcode 4.3 并且仍然有这个问题。通过安装此处提到的 osx-gcc-installer 和 CC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7-p352 修复
【解决方案3】:

Multiplearticles 建议 Ruby 不喜欢在编译时涉及 LLVM。权宜之计是彻底删除 RVM 安装——链接的文章说明了如何安装——然后用普通的 GCC 重新编译 Ruby。真正的修复必须来自 Apple/LLVM 或 Ruby 团队。

【讨论】:

    【解决方案4】:

    我解决了这个问题

    1. 安装 Xcode 4.2.x,
    2. export CC=gcc 添加到~/.bash_profile,
    3. 重新加载环境(source ~/.bash_profile),
    4. 正在执行rvm install 1.9.3
    5. 正在执行rvm ruby-1.9.3-rc1
    6. 执行gem update --system,最后
    7. 正在执行gem install bundler

    问题出在 Xcode 4.2.x 版本上。如果您运行rvm get head,您将看到此消息“请勿使用 Xcode 版本 4.2.x。它目前无法构建多个 rubies 和 gems...”。

    我没有 ruby​​ v1.8.7 的解决方案。

    我希望它有所帮助。

    【讨论】:

    • 是的。我能够让 1.9.2 编译得很好。 1.9.3 需要export CC=gcc 中的~/.bash_profile~/.rvmrc。在我 imploded RVM、卸载 Xcode 并安装 GCC 独立编译器之前,我永远无法编译 1.8.7。请参阅上面的解决方案。
    【解决方案5】:

    您可以在此处下载独立的 GCC 安装程序说明:https://github.com/kennethreitz/osx-gcc-installer

    这为您提供了一个非基于 llvm 的 gcc 安装,而不必乱用 Xcode。

    然后你可以使用命令

     export CC=/usr/bin/gcc-4.2 
    

    这允许您拥有用于 OSX 的最新 X 代码,并且仍然拥有适用于 ruby​​ 的快乐 gcc 版本。

    【讨论】:

      【解决方案6】:

      我需要在这台机器上使用 Xcode,所以独立的 gcc 不太适合我。

      根据其他海报,我遵循了 RVM 更新发行说明末尾的建议。

      注意,我不需要移除 RVM。我成功地删除了 Xcode 4.2.1(完全),并重新安装了 Xcode 4.1,然后使用了 CC=/usr/bin/gcc-4.2 rvm install 1.8.7 技巧。就我而言,我将export CC="/usr/bin/gcc-4.2" 放在我的个人资料中,以节省一些打字时间,同时还设置了各种宝石。

      这也适用于同样失败的 Ruby 企业版 (ree-1.8.7-2011.03)。

      【讨论】:

        【解决方案7】:

        rvm 安装后文档说:

        ** Lion 用户:请勿为 OS X Lion 使用 Xcode 版本 4.2.x。它目前无法构建几个 rubies 和 gems,以及几个 Homebrew 和 Macports 包。 Xcode 版本 4.1 (4B110) 有效。 您可以在以下位置找到适用于 OS X Lion 的 Xcode 4.1: https://developer.apple.com/downloads/download.action?path=Developer_Tools/xcode_4.1_for_lion/xcode_4.1_for_lion.dmg

        这对我有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-07-31
          • 2012-01-24
          • 2011-12-16
          • 2013-05-05
          • 2014-06-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多