[GRASS5] PNG driver: libgd2 pickup problem

Markus Neteler neteler at itc.it
Tue Apr 23 05:51:25 EDT 2002


On Tue, Apr 23, 2002 at 11:37:08AM +0200, Bernhard Reiter wrote:
> On Tue, Apr 23, 2002 at 10:46:21AM +0200, Markus Neteler wrote:
> > Hi,
> > 
> > browsing the archive I found a bit of help to compile the PNG
> > driver against libgd2.x. But when I use it, it picks up
> > the libgd1.8...
> > 
> > d.mon PNG
> > PNG: GRASS_TRUECOLOR status: TRUE
> > /mpa_sw/ssi/BIO/software/GRASS5.0.0/grass5bin_cvs/grass5/driver/PNG:
> > relocation error: /mpa_sw/ssi/BIO/software/GRASS5.0.0/grass5bin_cvs/grass5/driver/PNG:
> > undefined symbol: gdImageCreateTrueColor
> > No socket to connect to for monitor <PNG>.
> > Problem selecting PNG. Will try once more
> > No socket to connect to for monitor <PNG>.
> > 
> > nm /usr/local/lib/libgd.so.2.0.0 |grep gdImageCreateTrueColor
> > 00004a18 T gdImageCreateTrueColor
> > 
> > This indicates, that libgd1.8 is used, but the driver compiled against
> > 2.x. Any suggestions to solve this run-time problem?
> > 
> > ldd /mpa_sw/ssi/BIO/software/GRASS5.0.0/grass5bin_cvs/grass5/driver/PNG
> >         libgd.so => /usr/lib/libgd.so (0x40017000)
> >         libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4004a000)
> >         libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x40080000)
> >         libpng.so.2 => /usr/lib/libpng.so.2 (0x4009f000)
> >         libm.so.6 => /lib/libm.so.6 (0x400d6000)
> >         libc.so.6 => /lib/libc.so.6 (0x400f8000)
> >         libttf.so.2 => /usr/lib/libttf.so.2 (0x4022d000)
> >         libz.so.1 => /usr/lib/libz.so.1 (0x40257000)
> >         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
> 
> 
> Make sure the libpng library comes first when loading,
> e.g. in LD_LIBRARY_PATH.
> Ldd has to show the right one. Check the path,
> e.g. following through on:
> 	ls -l /usr/lib/libpng.so.2

How easy... Thanks:

export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/software/GRASS5.0.0/lib

d.mon PNG
PNG: GRASS_TRUECOLOR status: TRUE
PNG: collecting to file: map.png,
     GRASS_WIDTH=640, GRASS_HEIGHT=480
Graphics driver [PNG] started


Bingo. Obviously I was confused by this comment:
http://grass.itc.it/pipermail/grass5/2002-March/002225.html
 "Note: LD_LIBRARY_PATH won't affect which version is used; the two
 libraries will have different sonames (libgd.so.1 vs libgd.so.2)."

According to config.log the correct libgd (2.x) is used after several tries,
But above statement seems not to be true, since your (Bernhard's) suggestion
works.

It is still a slightly unpleasant solution, since other programs started
inside GRASS session may fail now (not sure, perhaps 2.x is fully downward
compliant).

Anyway, for now I get my truecolor PNG.

 Markus



More information about the grass-dev mailing list