> 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.