[GRASSLIST:3612] Re: PNG DRIVER, True color option

Glynn Clements glynn.clements at virgin.net
Tue Apr 30 02:17:29 EDT 2002


felipem wrote:

> I want to generate .png files in true color, I compiled the gd-2.0.1
> library (and freetype-2.1.0 too) however,when I ran d.mon start=PNG
> I have problems. What can I do?

> GRASS:> d.mon start=PNG
> /usr/local/grass5/driver/PNG: error while loading shared libraries: /usr/lib/libgd.so: undefined symbol: FT_New_Face

FT_New_Face is from the FreeType library.

> felipe at future:/usr/local/grass5/driver> ldd PNG
>         libz.so.1 => /lib/libz.so.1 (0x40022000)
>         libgd.so => /usr/lib/libgd.so (0x40031000)
>         libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x4006c000)
>         libpng.so.2 => /usr/lib/libpng.so.2 (0x4008b000)
>         libm.so.6 => /lib/libm.so.6 (0x400bd000)
>         libc.so.6 => /lib/libc.so.6 (0x400df000)
>         /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x4000000

It appears that configure has failed to detect that GD requires
libfreetype. What is the value of GDLIB in the
src/CMD/head/head.<platform> file?

Note that GD 2.x is still considered "beta". In particular, the
Makefile which they provide has a number of deficiencies (not
specifying "-fPIC", not including any dependencies, not specifying a
soname etc).

I've attached a better Makefile for GD 2.0.1.

Note: even if re-building GD fixes your problem, I'd still like to
find out why configure failed to detect the freetype dependency. Can
you send me the "config.log" file and the output from running
"configure"?

-- 
Glynn Clements <glynn.clements at virgin.net>

-------------- next part --------------
#Depending on your system and the libraries and features you have
#and want, you WILL need to modify this Makefile!

#If you do not have gcc, change the setting for COMPILER, but you must
#use an ANSI standard C compiler (NOT the old SunOS 4.1.3 cc
#compiler; get gcc if you are still using that). 
COMPILER=gcc

#If the ar command fails on your system, consult the ar manpage
#for your system. 
AR=ar

#Typical configuration: support for PNG images, JPEG images, and FreeType text.
#Remove -DHAVE_LIBFREETYPE if you can live without FreeType text.
#Add -DHAVE_XPM if you have X and xpm installed and you want that feature.

CFLAGS=-fPIC -g -DHAVE_LIBPNG -DHAVE_LIBJPEG -DHAVE_LIBFREETYPE -DHAVE_XPM

#PLEASE NOTE: YOU MAY HAVE TO JUGGLE THE ORDER OF THE LIBRARIES.
#Some systems are very picky about link order. They don't all agree
#on the right order, either. 
#
#Best for most users. If you don't have FreeType, remove -lfreetype.
#Add -lXpm if you need XPM support.

EXTRALIBS=-lpng -lz -ljpeg -lfreetype -lXpm -lX11 -lm
LIBS=-lgd ${EXTRALIBS}

#Typical install locations for freetype 2.0, zlib, xpm, libjpeg 
#and libpng header files. If yours are somewhere else, change this. 
#-I. is important to ensure that the version of gd you are installing 
#is used, and not an older release in your directory tree somewhere.

INCLUDEDIRS=-I/usr/X11R6/include/freetype2

#Typical install locations for freetype, zlib, xpm and libpng libraries.
#If yours are somewhere else, other than a standard location
#such as /lib or /usr/lib, then change this. This line shouldn't hurt 
#if you don't actually have some of the optional libraries and directories.
LIBDIRS= -L. -L/usr/X11R6/lib

#Location where libgd.so should be installed by "make install".
#THIS MUST BE ONE OF YOUR STANDARD SHARED LIBRARY LOCATIONS, unless
#you add a new directory to your LD_LIBRARY_PATH environment setting.
#Otherwise applications will NOT find libgd.so and will produce an 
#error.  
INSTALL_LIB=/usr/local/lib

#Location where .h files should be installed by "make install".
INSTALL_INCLUDE=/usr/local/include

#Location where useful non-test programs should be installed by "make install".
INSTALL_BIN=/usr/local/bin

#
#
# Changes should not be required below here.
#
#

# Update these with each release!

MAJOR_VERSION=2
VERSION=2.0.0

CC=$(COMPILER) $(INCLUDEDIRS)
LINK=$(CC) $(LIBDIRS) $(LIBS)

PROGRAMS=$(BIN_PROGRAMS) $(TEST_PROGRAMS)

BIN_PROGRAMS=pngtogd pngtogd2 gdtopng gd2topng gd2copypal gdparttopng webpng
TEST_PROGRAMS=gdtest gddemo gd2time gdtestft testac

all: libgd.so.${VERSION} $(BIN_PROGRAMS)

default: instructions

instructions:
	@echo First, edit this Makefile. Read the comments at
	@echo the beginning thoroughly.
	@echo
	@echo Second, type \'make install\' as root.
	@echo
	@echo This installs the GD ${VERSION} shared library,
	@echo which is required in order to use the included
	@echo utility programs, such as webpng, pngtogd, etc.
	@echo 
	@echo OPTIONAL third step: type \'make test\' to build 
	@echo the optional test programs. Type \'make install\' FIRST.

test: $(TEST_PROGRAMS)

install: all
	sh ./install-item 644 libgd.so.${VERSION} \
		$(INSTALL_LIB)/libgd.so.${VERSION}
	-rm $(INSTALL_LIB)/libgd.so.${MAJOR_VERSION} 2>/dev/null
	ln -s $(INSTALL_LIB)/libgd.so.${VERSION} \
		$(INSTALL_LIB)/libgd.so.${MAJOR_VERSION}	
	-rm $(INSTALL_LIB)/libgd.so 2>/dev/null
	ln -s $(INSTALL_LIB)/libgd.so.${VERSION} \
		$(INSTALL_LIB)/libgd.so	
	sh ./install-item 755 pngtogd $(INSTALL_BIN)/pngtogd
	sh ./install-item 755 pngtogd2 $(INSTALL_BIN)/pngtogd2
	sh ./install-item 755 gdtopng $(INSTALL_BIN)/gdtopng
	sh ./install-item 755 gd2topng $(INSTALL_BIN)/gd2topng
	sh ./install-item 755 gd2copypal $(INSTALL_BIN)/gd2copypal
	sh ./install-item 755 gdparttopng $(INSTALL_BIN)/gdparttopng
	sh ./install-item 755 webpng $(INSTALL_BIN)/webpng
	sh ./install-item 755 bdftogd $(INSTALL_BIN)/bdftogd
	sh ./install-item 644 gd.h $(INSTALL_INCLUDE)/gd.h
	sh ./install-item 644 gdcache.h $(INSTALL_INCLUDE)/gdcache.h
	sh ./install-item 644 gd_io.h $(INSTALL_INCLUDE)/gd_io.h
	sh ./install-item 644 gdfontg.h $(INSTALL_INCLUDE)/gdfontg.h
	sh ./install-item 644 gdfontl.h $(INSTALL_INCLUDE)/gdfontl.h
	sh ./install-item 644 gdfontmb.h $(INSTALL_INCLUDE)/gdfontmb.h
	sh ./install-item 644 gdfonts.h $(INSTALL_INCLUDE)/gdfonts.h
	sh ./install-item 644 gdfontt.h $(INSTALL_INCLUDE)/gdfontt.h

gddemo: gddemo.o
	$(CC) gddemo.o -o gddemo	$(LIBDIRS) $(LIBS)

testac: testac.o
	$(CC) testac.o -o testac	$(LIBDIRS) $(LIBS)

pngtogd: pngtogd.o
	$(CC) pngtogd.o -o pngtogd	$(LIBDIRS) $(LIBS) 

webpng: webpng.o
	$(CC) webpng.o -o webpng	$(LIBDIRS) $(LIBS)

pngtogd2: pngtogd2.o
	$(CC) pngtogd2.o -o pngtogd2	$(LIBDIRS) $(LIBS)

gdtopng: gdtopng.o
	$(CC) gdtopng.o -o gdtopng	$(LIBDIRS) $(LIBS)

gd2topng: gd2topng.o
	$(CC) gd2topng.o -o gd2topng	$(LIBDIRS) $(LIBS)

gd2copypal: gd2copypal.o
	$(CC) gd2copypal.o -o gd2copypal	$(LIBDIRS) $(LIBS)

gdparttopng: gdparttopng.o
	$(CC) gdparttopng.o -o gdparttopng	$(LIBDIRS) $(LIBS)

gdtest: gdtest.o
	$(CC) gdtest.o -o gdtest	$(LIBDIRS) $(LIBS)

gd2time: gd2time.o
	$(CC) gd2time.o -o gd2time	$(LIBDIRS) $(LIBS)

gdtestft: gdtestft.o
	$(CC) --verbose gdtestft.o -o gdtestft $(LIBDIRS) $(LIBS)

LIBOBJS=gd.o gd_gd.o gd_gd2.o gd_io.o gd_io_dp.o \
		gd_io_file.o gd_ss.o gd_io_ss.o gd_png.o gd_jpeg.o gdxpm.o \
		gdfontt.o gdfonts.o gdfontmb.o gdfontl.o gdfontg.o \
		gdtables.o gdft.o gdcache.o gdkanji.o wbmp.o \
		gd_wbmp.o gdhelpers.o gd_topal.o 

#Shared library. This should work fine on any ELF platform (Linux, etc.) with
#GNU ld or something similarly intelligent. To avoid the chicken-and-egg
#problem, this target also installs the library so that applications can
#actually find it.

libgd.so.${VERSION}: ${LIBOBJS}
	-rm -f libgd.so.${VERSION} 2>/dev/null
#	ld -shared -soname libgd.so.${MAJOR_VERSION} -o libgd.so.${VERSION} ${LIBOBJS}
	$(CC) -shared -Wl,-soname,libgd.so.${MAJOR_VERSION} -o libgd.so.${VERSION} ${LIBOBJS} ${LIBDIRS} ${EXTRALIBS}
	ln -sf libgd.so.${VERSION} libgd.so

#Static library, if you really need one for some reason.
libgd.a: ${LIBOBJS}
	rm -f libgd.a
	$(AR) rc libgd.a ${LIBOBJS}
	-ranlib libgd.a

clean:
	rm -f *.o *.a *.so ${PROGRAMS} test/gdtest.jpg test/gdtest.wbmp



More information about the grass-user mailing list