Brett Johnson wrote:
>
> ABI Draft:
> > 3.8. libGL and libGLU must be transitively linked with any libraries
> > they require in their own internal implementation, so that applications
> > don't fail on some implementations due to not pulling in libraries
> > needed not by the app, but by the implementation.
>
> I think this section should be changed. Requiring libraries to resolve
> their own internal dependencies is a start, and certainly should be
> required. But this isn't sufficient, in that it ignores the larger
> issue of compatibility between libraries when an app doesn't explicitly
> resolve it's own dependencies.
>
> For example, if an app compiles against the Mesa libs, it doesn't
> need to (and likely won't) explicitly link itself against libICE.so,
> even if the app depends on libICE.so entrypoints. As long as the
> app links against Mesa, it's libICE dependencies will be resolved
> through Mesa's transitive link.
I'm very surprised to hear that you can't have -lICE in your
app link command. Listing the same library twice (even if once
is an indirect occurance) shouldn't cause an error.
> Unfortunately though, this means that this app cannot run against
> any other libGL.so, unless the all other libGL's also provide this
> same link. So, all libraries must provide exactly the same set of
> transitive links, if we are to achieve actual binary compatibility
> between them.
>
> As a start, I'd like to suggest that we publish a "standard" set
> of libraries that all libGL's should transitively link against. As a
> strawman, I'll propose that this be the set of libraries that Mesa's
> libGL.so links against (as it's a pretty comprehensive set ;):
>
> libdl.so.2
> libXext.so.6
> libXmu.so.6
> libXi.so.6
> libXt.so.6
> libvga.so.1
> libSM.so.6
> libICE.so.6
> libg++.so.2.7.2
> libstdc++-libc6.1-1.so.2
> libm.so.6
> libc.so.6
> ld-linux.so.2
> libX11.so.6
> libstdc++.so.2.7.2
>
> Does anyone's libGL have any dependencies that aren't addressed
> here?
That list is way too long. I don't know how you're getting C++
libs in there. Also, a number of them, like Xmu, XI, Xt, are
only needed because of GLUT.
IMHO, libGL should only be linked with the libs it itself needs,
as is specified in the Linux/OpenGL spec.
-Brian