grib2c library not linking png and jpeg libraries

From: Tzung-May Fu <cetmfu_at_nyahnyahspammersnyahnyah>
Date: Fri, 9 Jan 2009 11:11:05 +0800

Hi all -

I'm trying to build NCL with GRIB2 support. The OS is Ubuntu linux, and I
am using Intel C and Fortran compilers.

During 'make Everything' for NCL, here's the error message I got:

        /home/tmfu/testlib/lib/libgrib2c.a(dec_png.o): In function
`dec_png':
        dec_png.c:(.text+0x99): undefined reference to
`png_create_read_struct'
        dec_png.c:(.text+0x11f): undefined reference to `png_set_read_fn'
        dec_png.c:(.text+0x136): undefined reference to `png_read_png'
        dec_png.c:(.text+0x149): undefined reference to `png_get_rows'
        dec_png.c:(.text+0x18a): undefined reference to `png_get_IHDR'
        dec_png.c:(.text+0x319): undefined reference to
`png_destroy_read_struct'
        dec_png.c:(.text+0x36a): undefined reference to
`png_destroy_read_struct'
        dec_png.c:(.text+0x39d): undefined reference to
`png_destroy_read_struct'
        dec_png.c:(.text+0x3cb): undefined reference to
`png_destroy_read_struct'
        make[4]: *** [ncl] Error 1

So I read Rick's reply on this thread:
http://www.ncl.ucar.edu/Support/install_archives/2008/0119.html

And I checked my libgrib2c.a compilation. Here's the strange part. My
makefile seems correct:

        DEFS=-DUSE_JPEG2000 -DUSE_PNG
        INC=-I/home/tmfu/testlib/include
        LDFLAGS=-L/home/tmfu/testlib/lib
        LIBS=-ljpeg -lpng
        #CFLAGS= $(INC) $(DEFS) # <----- I also trited this
        CFLAGS= $(INC) $(DEFS) $(LDFLAGS) $(LIBS)

        CC=icc
        LIB=libgrib2c.a
        ARFLAGS=

But the resulting 'libgrib2c.a' is somehow not linking PNG and JPEG
libraries correctly. I did an 'nm' on 'libgrib2c.a':

        nm libgrib2c.a | grep png

Here's what I got:
                         U pngunpack
        pngpack.o:
                         U enc_png
        0000000000000000 T pngpack
        pngunpack.o:
                     U dec_png
        0000000000000000 T pngunpack
        dec_png.o:
        0000000000000030 T dec_png
                         U png_create_info_struct
                         U png_create_read_struct
                         U png_destroy_read_struct
                         U png_get_IHDR
                         U png_get_io_ptr
                         U png_get_rows
                         U png_read_png
                         U png_set_read_fn
                         U png_sig_cmp
        enc_png.o:
        0000000000000040 T enc_png
                         U png_create_info_struct
                         U png_create_write_struct
                         U png_destroy_write_struct
                         U png_get_io_ptr
                         U png_set_IHDR
                         U png_set_rows
                         U png_set_write_fn
                         U png_write_png
                         U pngpack

So it seems that these functions are really NOT defined in 'libgrib2c.a'. I
did check to see the same functions are defined in 'libpng.a'.

The only clue I can find is during 'make all' for grib2c libraries, the
following warning message appeared:

        icc -c -I/home/tmfu/testlib/include -DUSE_JPEG2000 -DUSE_PNG -L/home/tmfu/testlib/lib
 -ljpeg -lpng pngunpack.c
        pngunpack.c(63): warning #167: argument of type "unsigned char *" is
incompatible with parameter of type "char *"
                   iret=(g2int)dec_png(cpack,&width,&height,ctemp);
                                                        ^
        pngunpack.c(72): (col. 10) remark: LOOP WAS VECTORIZED.

The same problem exists with the JPEG libraries in 'libgrib2c.a'. I've
tried using gcc instead of icc, different ways of linking the libraries, and
even copying all JPEG and PNG libraries and include files to the grib2c code
directory. Same result every time.

If anybody have any suggestion, I would very much appreciate it! Thanks in
advance.

Regards,
May Fu

_______________________________________________
ncl-install mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-install
Received on Thu Jan 08 2009 - 20:11:05 MST

This archive was generated by hypermail 2.2.0 : Fri Jan 09 2009 - 07:59:48 MST