Re: Binary Compatibility question



Le dim 07/12/2003 à 19:48, Edwin a écrit :
> On Sun, 2003-12-07 at 09:50, Sean Middleditch wrote:
> > On Sun, 2003-12-07 at 11:09, Edwin wrote:
> > > Hi,
> > > 
> > > Fairly recently I updated my app to run under Gnome 2.x. I distributed a
> > > source .tar.gz and a binary i386 RPM (generated under RedHat 8.0 & Gnome
> > > 2.0). Then I found that the RPM doesn't install on Mandrake 9.2 (which
> > > uses Gnome 2.4), even though I'd installed all the Gnome components. The
> > > problem was that I had a dependency on liblinc.so.1 (via Orbit). I
> > > understand that's no longer required by Gnome 2.4, so the Mandrake box
> > > understandably didn't have it. When I recompiled on the Mandrake box,
> > > everything worked fine.
> > 
> > Your application shouldn't depend on linc - that's a private library not
> > intended for use by non-core applications.  That would be causing the
> > incompatibility.
> 
> I don't call linc directly, and I'm pretty sure I only use public APIs.
> Autoconf picks up the set of libraries to link against via pkg-config.
> 
> My configure.in just has
> 
> pkg_modules="libgnomeui-2.0"
> PKG_CHECK_MODULES(GNOFRACT4D, [$pkg_modules])
> AC_SUBST(GNOFRACT4D_CFLAGS)
> AC_SUBST(GNOFRACT4D_LIBS)
> 
> When I build on RedHat, GNOFRACT4D_LIBS expands to
> -lgnomeui-2 -lSM -lICE -lbonoboui-2 -lgnomecanvas-2 -lgnome-2
> -lart_lgpl_2 -lpangoft2-1.0 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0
> -lgdk_pixbuf-2.0 -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lbonobo-2
> -lgconf-2 -lgnomevfs-2 -lbonobo-activation -lORBit-2 /usr/lib/libxml2.so
> -lz -lm /usr/lib/liblinc.so -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0
> -lglib-2.0 -ldl -lpthread
> 
> If there's some way I can ditch all this and have the GUI still work
> that'd be great, but my understanding is GnomeUI requires Bonobo
> requires Orbit requires linc, and I'm stuck with it. Is that not true?

The problem is that you cannot have any warranty that an application
built with the gnome-2.2 libs will work with the gnome-2.4 libs (I
suppose it should not work). You have to recompile. Between two minor
versions of the same major version, there is a source compatibility but
not a binary compatibility, so something which can be built against
gnome-2.0 or 2.2 will build against the later 2.x versions, but will
work only after a recompilation. Am I wrong?

Regards,

Jean Bréfort





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]