[ncl-install] grib2c library not linking png and jpeg
libraries
Mary Haley
haley at ucar.edu
Fri Jan 9 06:40:09 MST 2009
Hi May,
I think this was a bug in the ymake system for NCL. You
need to link in the PNG library if you enable PNG support
for GRIB2.
To fix this, look at the file $NCARG/config/Project for a
line that starts with "#define GRIB2lib".
Change this line to be:
#define GRIB2lib -lgrib2c -ljasper -lpng -lz
To test if this fix works, type the following:
cd $NCARG/ni/src/ncl
make me
make all install
If this works, then you can finish your NCL/NCAR Graphics
make with:
cd $NCARG
make all install >&! make-output-2
I'm using "$NCARG" to represent the top directory of the
NCL/NCAR Graphics source tree.
I'll add this to our troubleshooting guide.
--Mary
On Fri, 9 Jan 2009 11:11:05 +0800
"Tzung-May Fu" <cetmfu at polyu.edu.hk> wrote:
> 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
More information about the ncl-install
mailing list