On Mon, 25 Oct 1999, Stuart Anderson wrote:
> > This sounds rather ugly - could you explain?
>
> The linker sees -lGL, goes out and looks for libGL.so in the path(s) specified
> (and then looks for libGL.a if the .so isn't found). After resolving symbols,
> etc against the shared library, it copies the DT_SONAME from the shared library
> to the application as a DT_NEEDED.
>
> Approach #0 (which I didn't mention above) is for everyone that ships a GL
> development environment to simply set the DT_SONAME to libGL.lsb.1. This
> won't work for all libraries, so it isn't a general solution.
>
> Approach #1 is to create a new tool, called mklsb, which is invoked on the
> application itself. It will convert the application to an LSB conforming
> application by fixing the DT_NEEDED records to use the .lsb.1 names instead
> of the .so names that it gets from the default development library.
>
> Approach #2 is to simply create a set of link time libraries that you use
> if you are building an LSB conformant application. These libraries would have
> the .lsb.1 form of their names in the DT_SONAME record, and could simply
> contain stubs for the functions the library provides. These libraries would
> likely live in /usr/lib/LSB and allow you to use the -L option to the linker
> to specifiy that you want to build an LSB application.
Well, if that's what the LSB standard requires then:
1) It's a damned stupid standard and we should ignore it.
2) There are no other libraries on either of the Linux boxes that
I use that conform to this so-called standard. (One of those machines
is a RedHat 5.2 box and the other is a bang up to date SuSE 6.1).
There is no /usr/lib/LSB directory on either machine.
I find it hard to believe that this is what the standard requires.
Having to run the BINARY of your application through some kind of 'mklsb'
kludge for every library you link to (if they all conformed to the standard)
would get out of hand - fast!
Having to have two copies of every library (one for the stubs and
another for the code) is just asking for trouble too.
I suggest we ignore this LSB thingy and do what every other Linux
library currently does. This would mean:
/usr/lib/libGL.so.1.2.<revision>
...with a symlink from:
/usr/lib/libGL.so.1.2
and
/usr/lib/libGL.so
I have recently been talking with one of the Debian package maintainers
(the guy who is responsible for putting my PLIB libraries into the
next Debian release)...he tells me that Debian is committed to
'Doing Things Right' - and the 'Right' place for my libraries turns
out to be with the usual '/usr/lib/lib<name>.so.<major>.<minor>' naming
convention.
I was really hoping that the standard we were drawing up for OpenGL
under Linux would make my life as a maintainer of Linux/OpenGL
software easier. I currently get about 80 emails a week from
people who have trouble installing my freeware game - easily 90%
of those are because they don't have OpenGL installed properly.
We need to make this EASIER - and if some standard (that nobody
else follows) makes it HARDER - then we are doing nobody any
favors.
Steve Baker (817)619-2657 (Vox/Vox-Mail)
Raytheon Systems Inc. (817)619-2466 (Fax)
Work: [EMAIL PROTECTED] http://www.hti.com
Home: [EMAIL PROTECTED] http://web2.airmail.net/sjbaker1