[Fwd: Re: [Mapserver-dev] configure script problems with multiple
GD]
Daniel Morissette
dmorissette at dmsolutions.ca
Wed Oct 27 09:46:50 EDT 2004
Daniel Morissette wrote:
>
> As there is no clever way to ask the runtime linker to
> bind to the right library, the mapserver interface
> should be at least stable to not to crash even in that
> case.
>
I think you're confusing the runtime linker and the compile-time linker.
At least on Linux, the runtime linker always uses the version of the lib
that was specified at compile/link time. This is done through the
versioning information in the libgd.so.x.y.z. That's not the problem.
The problem is the presence of multiple sets of headers and multiple
libgd.so. Keep only one and you're all set.
>> Users are only required to remove the -devel part of
>> the library in the system dirs. It is possible to keep several runtime
>> copies of GD on the system (i.e. several libgd.so.x.y.z) for existing
>> programs to continue to run.
>
>
> Yes, but you cannot assume that the user is using a
> specific operating system and you cannot assume that
> the mapserver is linked to the library with the
> according header files.
>
Uh? "you cannot assume that the mapserver is linked to the library with
the according header files."? If we cannot assume that the library that
we link with matches the header files then how can we hope to compile
any program in a predictable way?
>> The problems happen only when you have
>> multiple copies of the header files and of libgd.so (e.g. the gd-devel
>> RPM).
>
>
> With sunfreeware for example the header- and the
> library files are not always in a separate package.
>
I'm not familiar with sunfreeware packages, but I think that it's their
mistake if they didn't think that it would be smart to separate headers
and runtime libs. Unfortunately that means that sunfreeware users would
have to manually remove the duplicate copies of the header files and
libgd.so and keep only one set.
>
> The other point is that with the current configuration
> of autoconf, all the library paths are given on the
> command line of gcc. Imagine the following:
> The library libxyz has the prefix /usr/here. This is
> also the prefix of some old libgd's. Even when the
> user gives --with-gd=/usr/there the compiler will use
> the version from /usr/here, when the parameters of the
> libxyz library are given first to the compiler.
>
Exactly, that's the problem that you need to solve if you want to
support multiple dev copies of the same lib on the same system.
As I mentioned before, I do not have time/resources/knowledge to
accomodate this kind of configuration and I'm not convinced yet that
this is a legitimate case to support. If someone else wants to try then
please go ahead, you've got the source.
The real long term solution to this IMHO is to provide precompiled
binaries so that the users don't have to compile themselves. There are a
few sets of Linux/Unix binaries here and there, but they don't cover all
platforms yet unfortunately.
Daniel
--
------------------------------------------------------------
Daniel Morissette dmorissette at dmsolutions.ca
DM Solutions Group http://www.dmsolutions.ca/
------------------------------------------------------------
More information about the mapserver-dev
mailing list