【问题标题】:RVM ruby 1.9.2 Symbol not found: _STR2CSTRRVM ruby​​ 1.9.2 未找到符号:_STR2CSTR
【发布时间】:2011-01-07 23:34:24
【问题描述】:

RVM 故障排除。

同时安装了 Ruby 1.9.2-Head / 1.9.2-p136

运行服务器时,服务器收到此错误时崩溃:

dyld: lazy symbol binding failed: Symbol not found: _STR2CSTR
Expected in: flat namespace

dyld: Symbol not found: _STR2CSTR
Expected in: flat namespace

找到这个帖子但没有太大帮助: http://www.ruby-forum.com/topic/215406

任何解决方案都会很棒!

【问题讨论】:

  • 什么操作系统?你是如何安装 RVM 的?
  • Mac OSX 版本 10.6.6 使用 $ bash 安装 RVM rvm.beginrescueend.com/releases/rvm-install-head )
  • 我还想补充一点,我将它添加到我的 batch_profile [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm "
  • 我遇到了同样的问题,但来自 raspell gem。

标签: ruby-on-rails ruby macos rvm


【解决方案1】:

我在使用 Ruby 1.9.2 和 sqlite-ruby-1.2.4 gem 时遇到了同样的问题,Rails 3.0.3 不知何故需要它。这是我的错误信息:

dyld: Symbol not found: _STR2CSTR
  Referenced from: ~/.rvm/gems/ruby-1.9.2-p136/gems/sqlite3-ruby-1.2.4/lib/sqlite3_api.bundle
Expected in: flat namespace

我可以通过转到 sqlite3_api.bundle 的源代码所在的~/.rvm/gems/ruby-1.9.2-p136/gems/sqlite3-ruby-1.2.4/ext 来修复它,并将每次出现的STR2CSTR 替换为StringValuePtr as described here (first reply)。然后我重新编译(使用 make)并将生成的 sqlite3_api.bundle 复制到 lib/ 文件夹。

【讨论】:

    【解决方案2】:

    我将我的 sqlite3-ruby gem 更新为 sqlite3 只需更改(在您的 Gemfile 中)

    gem 'sqlite3-ruby', :require => 'sqlite3'
    

    gem 'sqlite3', :require => 'sqlite3'
    

    然后运行

    bundle install
    

    【讨论】:

      【解决方案3】:

      您的一个 gem(ncurses?)使用本机 C API。 函数 STR2CSTR 在 Ruby 1.9 中被删除 所以要么你使用 ffi-ncurses gem,要么你可以 修补 ncurses gem 的源代码并重新编译。

      【讨论】:

      • 似乎仍然有同样的问题......这些是我采取的步骤。 1.) rvm 默认 - 使用 ruby​​ 1.9.2 2.) rvm 使用 @rails3 - 命名 gemset 3.) cd testapp - testapp dir 4.) gem install ffi-ncurses 5.) bundle install 6.) 运行服务器.. . 还是一样的问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 1970-01-01
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多