Hi Graham,  
> I added a call to ruby_init_prelude() but it isn't declared in ruby.h so
> I got a compilation error. I tried declaring it myself, but then it  
> won't link because it's static in ruby.c.

My badĄ˝I didn't think to check the linkage; was assuming the ruby_ prefix implied it might be externally called.  

> Finally, I faked the arguments as "ruby /dev/null" and it worked!!! I  
> now get synchronized() defined. It's a bit clumsy having to fake the  
> arguments, but beggars can't be choosers.

It does seem like a less than perfect solution. :(  I note (re: your comment that derefing argv when argc==0 is probably a bug) that the offending line does have that somewhat cheeky comment, /* for the time being */.

> I'll go back to my original script and see whether it works.... Yes it does!
Great!  Super glad this has worked out well. :)

Cheers,

Arlen