using rails 3.0.1 and cucumber-rails (~>1.1.0).. and got this weird error message:
dyld: lazy symbol binding failed: Symbol not found: _yajl_set_static_value Referenced from: ~/.rvm/gems/ruby-1.9.3-p0/gems/yajl-ruby-1.0.0/lib/yajl/yajl.bundle Expected in: flat namespace dyld: Symbol not found: _yajl_set_static_value Referenced from: ~/.rvm/gems/ruby-1.9.3-p0/gems/yajl-ruby-1.0.0/lib/yajl/yajl.bundle Expected in: flat namespace Trace/BPT trap: 5
so.. working solution is:
- go to the gem itself ~/.rvm/gems/ruby-1.9.3-p0/gems/yajl-ruby-1.0.0/ext/yajl open yajl_ext.h and yajl_ext.c and change inline void to static void
- gmake clean all
- overwrite yajl.bundle in lib/
example of edited yajl.h
static void yajl_check_and_fire_callback(void * ctx); static void yajl_set_static_value(void * ctx, VALUE val);
voila! :)
Very nice! Ran into this while using Yajl::Parser to parse an HTTP stream, and this fix solved it.
Is changing inline to static safe? Not enough of a C whiz to understand the implications…
Or, just upgrade yajl-ruby to 1.1.0.
Leonind: Sometimes there’s a case when you can’t upgrade…
Thanks for taking time to post this! You saved me a lot of time.