> Why is installing Fox and FXRuby always so painful? :-/

  "Rich the treasure,
   Sweet the pleasure,
Sweet is pleasure after pain."
  -- John Dryden

> I built and installed Fox 1.0.11 myself; it lives in /usr/lib:
> 
> /usr/lib/libFOX-1.0.so.0
> /usr/lib/libFOX-1.0.so.0.0.11
> 
> All of the example apps run with no errors.
> 
> I built and installed FXRuby 1.0.10 as well.  Other than the regular Ruby 
> header problems, it gave me no errors.  However, any attempt at using an 
> FXRuby app results in:
> 
> browser.rb:3:in `require': 
> /usr/lib/ruby/site_ruby/1.6/i586-linux-gnu/fox.so: undefined symbol: 
> _10FXColorBar.metaClass - /usr/lib/ruby/site_ruby/1.6/i586-linux-gnu/fox.so 
> (LoadError)
> 
> Is FXRuby 1.0.10 incompatible with Fox 1.0.11?

No, definitely not. Although the FOX and FXRuby versions were tightly 
linked for pre-1.0 releases, that's no longer the case; any FOX 1.0.x 
library should work for any FXRuby 1.0.x library.

> I have no other versions of Fox or FXRuby installed; all of the fox headers 
> I can find belong to the 1.0.11 release, as well as all of the libs.

I will take your word for it, but another quick sanity check would be to 
use ldd to check the dependencies of fox.so:

     ldd /usr/lib/ruby/site_ruby/1.6/i586-linux-gnu/fox.so

and confirm that the libFOX.so it's picking up is the one that you 
believe it's picking up.

> It seems that most of the problems that I have with Fox and FXRuby is a 
> result of some incompatiblities in the library versions.  API 
> incompatibilites between /minor/ revisions seems rather... extreme.  If I 
> am seeing a version incompatability, why does FXRuby compile at all?

See previous comments about the 0.99.x releases, where there could 
indeed be significant API changes between minor releases. This is *not* 
true for the 1.0.x releases of FOX, where the API is frozen.

Note that I am still tweaking the FXRuby API a bit, but nothing drastic 
at this point and usually in ways that make it more Ruby-friendly. For 
example, in FXRuby-1.0.3 you would get and set the range (i.e. the 
minimum and maximum values) for an FXDial widget like this:

     minValue, maxValue = someDial.getRange()
     anotherDial.setRange(1, 10)

but in FXRuby-1.0.10, I (hopefully) made this look a little more 
familiar to Ruby programmers by using Ruby Range objects instead:

     someRange = someDial.range
     anotherDial.range = 1..10

> Is there something else going on here that I'm missing?  I wouldn't be 
> surprised, but I'd like to know.

I assume that you used the same version of g++ to compile both FOX and 
FXRuby. Did you also use that same version of gcc to build Ruby itself? 
I know that in the past I've seen some weirdness (i.e. ABI 
incompatibilities) between different releases of GCC. I'm still using 
the gcc-2.96 that came installed on my Red Hat Linux 7.2 system and have 
not tried out any of the gcc-3.0.x or 3.1 releases.