Unless you've tried doing something like this, you may not be
able to help much, but I'm hoping that someone on the list has
encountered this problem or a similar one before.

For reasons to lengthy to go into now, what I am attempting to
do is to write a C program which embeds a Ruby interpreter
which then runs a ruby script which then "requires" an extension
module which is written in C.  Like I said, don't ask why unless
you want a 5 minute explanation.

The problem is that one of the routine in the extension module
call rb_raise, passing rb_eTypeError as an argument.  rb_eTypeError
is coming up as an undefined symbol, and the require statement is
failing.  I've given:

  -Wl,-rpath,/usr/lib/ruby/1.6/i686-linux as an argument to gcc

to tell ld-linux.so to include this directory in its search path,
and rb_eTypeError is defined in error.o which is found in libruby.a.
nm shows the type of rb_eTypeError to be 'C', which means a common
symbol, although I'm not sure that makes a difference.  Anyway,
so far, I can't figure out why the dynamic loader (dlopen call in
dln.c) can't seem to find the definition of rb_eTypeError.

I  tried writing a small example program, which "required" a small
exa.rb routine which defined a module with one method which
immediately called "raise TypeError, ...".  Unfortunately, for
some unknown reason, the example worked, while my program
doesn't.

If anyone has any suggestions, I'd appreciate it.  In the meantime,
I'll try to come up with a simple example program which illustrates
the problem.  Thanks.

Dennis 

---------------------------------------------
|                                           |
|     The way to be happy is to be good     |
|                                           |
---------------------------------------------