RVM ruby​​ 1.9.2未找到符号:_STR2CSTR

时间:2011-01-07 23:34:24

标签: ruby-on-rails ruby macos rvm

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

任何解决方案都会很棒!

3 个答案:

答案 0 :(得分:6)

我遇到了与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 {{3} }。然后我重新编译(使用make)并将生成的sqlite3_api.bundle复制到lib /文件夹。

答案 1 :(得分:3)

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

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

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

并运行

bundle install

答案 2 :(得分:0)

你的一个宝石(ncurses?)使用原生C API。 在Ruby 1.9中删除了函数STR2CSTR 所以要么你使用ffi-ncurses gem,要么就是你 修补ncurses gem的来源并重新编译它。