GNOME Bugzilla – Bug 87837
Syntax error in Makefile or gdk/libgdk-x11-2.0.la
Last modified: 2011-02-04 16:10:07 UTC
Hi, it seems the automagically generated Makefile or possibly resulting files from libtool are sometimes wrong. I tried to create dynamic and static libs (see configure options below) to avoid my problem with modules (see my other bug report). That result in some option being ignored by ld. But, I get some error about png not being available. ;( /bin/sh ../libtool --mode=link cc -O3 -n32 -TARG:platform=IP22 -I/usr/local/include -I/software/@sys/usr/include -I/usr/local/BerkeleyDB.4.0/include -version-info 0:5:0 -export-dynamic -rpath /software/@sys/usr/lib -export-symbols-regex "^[^_].*" ../gdk-pixbuf/libgdk_pixbuf-2.0.la -lXext -lX11 -L/software/@sys/usr/lib -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv -ltiff -ljpeg -lpng -lz -lm -o libgdk-x11-2.0.la gdk.lo gdkcolor.lo gdkcursor.lo gdkdraw.lo gdkevents.lo gdkfont.lo gdkgc.lo gdkglobals.lo gdkkeys.lo gdkkeyuni.lo gdkimage.lo gdkpango.lo gdkpixbuf-drawable.lo gdkpixbuf-render.lo gdkpixmap.lo gdkpolyreg-generic.lo gdkrgb.lo gdkrectangle.lo gdkregion-generic.lo gdkwindow.lo gdkenumtypes.lo x11/libgdk-x11.la -L/usr/local/lib -L/software/@sys/usr/lib -L/usr/local/BerkeleyDB.4.0/lib -liconv -lintl -liconv rm -fr .libs/libgdk-x11-2.0.la .libs/libgdk-x11-2.0.* .libs/libgdk-x11-2.0.* generating symbol list for `libgdk-x11-2.0.la' /usr/bin/nm -B gdk.o gdkcolor.o gdkcursor.o gdkdraw.o gdkevents.o gdkfont.o gdkgc.o gdkglobals.o gdkkeys.o gdkkeyuni.o gdkimage.o gdkpango.o gdkpixbuf-drawable.o gdkpixbuf-render.o gdkpixmap.o gdkpolyreg-generic.o gdkrgb.o gdkrectangle.o gdkregion-generic.o gdkwindow.o gdkenumtypes.o x11/.libs/libgdk-x11.al | sed -n -e 's/^.*[ ]\([BCDEGRST][BCDEGRST]*\)[ ][ ]*\(\)\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2\3 \3/p' | sed 's/.* //' | sort | uniq > .libs/libgdk-x11-2.0.exp egrep -e "^[^_].*" ".libs/libgdk-x11-2.0.exp" > ".libs/libgdk-x11-2.0.expT" mv -f ".libs/libgdk-x11-2.0.expT" ".libs/libgdk-x11-2.0.exp" rm -fr .libs/libgdk-x11-2.0.lax mkdir .libs/libgdk-x11-2.0.lax rm -fr .libs/libgdk-x11-2.0.lax/libgdk-x11.al mkdir .libs/libgdk-x11-2.0.lax/libgdk-x11.al (cd .libs/libgdk-x11-2.0.lax/libgdk-x11.al && ar x /scratch/gtk+-2.0.5/gdk/x11/.libs/libgdk-x11.al) /usr/bin/ld -n32 -shared gdk.o gdkcolor.o gdkcursor.o gdkdraw.o gdkevents.o gdkfont.o gdkgc.o gdkglobals.o gdkkeys.o gdkkeyuni.o gdkimage.o gdkpango.o gdkpixbuf-drawable.o gdkpixbuf-render.o gdkpixmap.o gdkpolyreg-generic.o gdkrgb.o gdkrectangle.o gdkregion-generic.o gdkwindow.o gdkenumtypes.o .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkwindow-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkinput.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkevents-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkinput-none.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/xsettings-common.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkselection-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkgeometry-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/xsettings-client.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkdnd-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkcursor-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkvisual-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkpixmap-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkmain-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkglobals-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkfont-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkproperty-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkkeys-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkdrawable-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkgc-x11.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkxid.lo .libs/libgdk-x11-2.0.lax/libgdk-x11.al/gdkim-x11.lo -L/software/@sys/usr/local/lib -L/usr/local/BerkeleyDB.4.0/lib -L/software/@sys/usr/lib -L/usr/local/lib ../gdk-pixbuf/.libs/libgdk_pixbuf-2.0.so -lXext -lX11 /software/@sys/usr/lib/libpangox-1.0.so /software/@sys/usr/lib/libpango-1.0.so /software/@sys/usr/lib/libgobject-2.0.so /software/@sys/usr/lib/libgmodule-2.0.so /software/@sys/usr/lib/libglib-2.0.so -ltiff /software/@sys/usr/lib/libjpeg.so -lpng -lz -lm x11/.libs/libgdk-x11.al -R/software/@sys/usr/lib -lc /software/@sys/usr/lib/libintl.so /software/@sys/usr/lib/libiconv.so -lc -soname libgdk-x11-2.0.so.1 `test -n "sgi1.4:sgi1.3:sgi1.2:sgi1.1:sgi1.0:sgi1.5" && echo -set_version sgi1.4:sgi1.3:sgi1.2:sgi1.1:sgi1.0:sgi1.5` -update_registry .libs/so_locations -o .libs/libgdk-x11-2.0.so.1.5 (null): WARNING 1 : Unknown option: R/software/@sys/usr/lib (ignored). -------------------------------------^ ld32: WARNING 84 : /software/@sys/usr/lib/libtiff.so is not used for resolving any symbol. ld32: WARNING 84 : /software/@sys/usr/lib/libjpeg.so is not used for resolving any symbol. ld32: WARNING 84 : /software/@sys/usr/lib/libpng.a is not used for resolving any symbol. ld32: WARNING 84 : /software/@sys/usr/lib/libz.a is not used for resolving any symbol. (cd .libs && rm -f libgdk-x11-2.0.so.1 && ln -s libgdk-x11-2.0.so.1.5 libgdk-x11-2.0.so.1) (cd .libs && rm -f libgdk-x11-2.0.so && ln -s libgdk-x11-2.0.so.1.5 libgdk-x11-2.0.so) (cd .libs && rm -f libgdk-x11-2.0.so && ln -s libgdk-x11-2.0.so.1.5 libgdk-x11-2.0.so) rm -fr .libs/libgdk-x11-2.0.lax mkdir .libs/libgdk-x11-2.0.lax rm -fr .libs/libgdk-x11-2.0.lax/libgdk-x11.al mkdir .libs/libgdk-x11-2.0.lax/libgdk-x11.al [...] make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk' make[2]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk' Making all in gtk make[2]: Entering directory `/software/scratch/gtk+-2.0.5/gtk' Making all in stock-icons make[3]: Entering directory `/software/scratch/gtk+-2.0.5/gtk/stock-icons' GDK_PIXBUF_MODULEDIR=../../gdk-pixbuf ../../gdk-pixbuf/gdk-pixbuf-csource \ --raw --build-list stock_add_16 ./stock_add_16.png stock_add_24 ./stock_add_24.png stock_align_center_16 ./stock_align_center_16.png stock_align_center_24 ./stock_align_center_24.png stock_align_justify_16 ./stock_align_justify_16.png stock_align_justify_24 ./stock_align_justify_24.png stock_align_left_16 ./stock_align_left_16.png stock_align_left_24 ./stock_align_left_24.png stock_align_right_16 ./stock_align_right_16.png stock_align_right_24 ./stock_align_right_24.png stock_apply_20 ./stock_apply_20.png stock_cancel_20 ./stock_cancel_20.png stock_dnd_multiple_32 ./stock_dnd_multiple_32.png stock_bottom_16 ./stock_bottom_16.png stock_bottom_24 ./stock_bottom_24.png stock_cdrom_16 ./stock_cdrom_16.png stock_cdrom_24 ./stock_cdrom_24.png stock_clear_24 ./stock_clear_24.png stock_close_20 ./stock_close_20.png stock_close_24 ./stock_close_24.png stock_colorselector_24 ./stock_colorselector_24.png > ./gtkstockpixbufs.h || \ ( rm -f ./gtkstockpixbufs.h && false ) failed to load "./stock_add_16.png": Image type 'png' is not supported make[3]: *** [gtkstockpixbufs.h] Error 1 make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gtk/stock-icons' make[2]: *** [all-recursive] Error 1 What does it mean that png is not supported? The libpng.a is available and was used for linking, configure selected tiff&png&jpg libraries to be used: ./configure --prefix=/software/@sys/usr --disable-modules --disable-glibtest --enable-static=yes [...] checking for cc option to produce PIC... none checking if cc static flag -non_shared works... no checking if cc supports -c -o file.o... yes checking if cc supports -c -o file.lo... yes checking whether the linker (/usr/bin/ld -n32) supports shared libraries... yes checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... no checking dynamic linker characteristics... irix6.5 ld.so checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes creating libtool checking whether to enable maintainer-specific portions of Makefiles... no [...] checking whether to build gmodulized gdk-pixbuf... no checking for TIFFReadScanline in -ltiff... yes checking tiffio.h usability... yes checking tiffio.h presence... yes checking for tiffio.h... yes checking for jpeg_destroy_decompress in -ljpeg... yes checking for jpeglib.h... yes checking for jpeg_simple_progression in -ljpeg... yes checking for libpng12... no checking for png_read_info in -lpng... yes checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for png_structp in png.h... yes [...] And, back to the original problem, if I look in gdk/ subdirectory from where comes the R option, I find it in file libgdk-x11-2.0.la: $ grep "R/software/@sys/usr/lib" * libgdk-x11-2.0.la:dependency_libs=' -R/software/@sys/usr/lib /scratch/gtk+-2.0.5/gdk-pixbuf/libgdk_pixbuf-2.0.la -L/usr/local/lib -L/software/@sys/usr/lib -L/usr/local/BerkeleyDB.4.0/lib -lXext -lX11 /software/@sys/usr/lib/libpangox-1.0.la /software/@sys/usr/lib/libpango-1.0.la -L/software/@sys/usr/local/lib /software/@sys/usr/lib/libgobject-2.0.la /software/@sys/usr/lib/libgmodule-2.0.la /software/@sys/usr/lib/libglib-2.0.la -ltiff /software/@sys/usr/lib/libjpeg.la -lpng -lz -lm /software/@sys/usr/lib/libintl.la -lc /software/@sys/usr/lib/libiconv.la ' $ ld expects either -L or -rpath , who will judge?
Here's a clear test case. $ rm gdk-pixbuf/gdk-pixbuf-csource $ make make all-recursive make[1]: Entering directory `/software/scratch/gtk+-2.0.5' Making all in po make[2]: Entering directory `/software/scratch/gtk+-2.0.5/po' make[2]: Leaving directory `/software/scratch/gtk+-2.0.5/po' Making all in gdk-pixbuf make[2]: Entering directory `/software/scratch/gtk+-2.0.5/gdk-pixbuf' Making all in pixops make[3]: Entering directory `/software/scratch/gtk+-2.0.5/gdk-pixbuf/pixops' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk-pixbuf/pixops' make[3]: Entering directory `/software/scratch/gtk+-2.0.5/gdk-pixbuf' /bin/sh ../libtool --mode=link cc -O3 -n32 -TARG:platform=IP22 -I/usr/local/include -I/software/@sys/usr/include -I/usr/local/BerkeleyDB.4.0/include -o gdk-pixbuf-csource gdk-pixbuf-csource.o libgdk_pixbuf-2.0.la -L/usr/local/lib -L/software/@sys/usr/lib -L/usr/local/BerkeleyDB.4.0/lib -liconv -lintl -liconv cc -O3 -n32 -TARG:platform=IP22 -I/usr/local/include -I/software/@sys/usr/include -I/usr/local/BerkeleyDB.4.0/include -o .libs/gdk-pixbuf-csource gdk-pixbuf-csource.o ./.libs/libgdk_pixbuf-2.0.so -L/usr/local/lib -L/software/@sys/usr/lib -L/usr/local/BerkeleyDB.4.0/lib /software/@sys/usr/lib/libgmodule-2.0.so /software/@sys/usr/lib/libgobject-2.0.so /software/@sys/usr/lib/libglib-2.0.so -ltiff /software/@sys/usr/lib/libjpeg.so -lpng -lz -lm /software/@sys/usr/lib/libintl.so -lc /software/@sys/usr/lib/libiconv.so -Wl,-rpath -Wl,/software/@sys/usr/lib ld32: WARNING 84 : /software/@sys/usr/lib/libgmodule-2.0.so is not used for resolving any symbol. ld32: WARNING 84 : /software/@sys/usr/lib/libtiff.so is not used for resolving any symbol. ld32: WARNING 84 : /software/@sys/usr/lib/libjpeg.so is not used for resolving any symbol. ld32: WARNING 84 : /software/@sys/usr/lib/libpng.a is not used for resolving any symbol. ld32: WARNING 84 : /usr/local/lib/libz.a is not used for resolving any symbol. creating gdk-pixbuf-csource make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk-pixbuf' make[2]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk-pixbuf' Making all in gdk make[2]: Entering directory `/software/scratch/gtk+-2.0.5/gdk' Making all in x11 make[3]: Entering directory `/software/scratch/gtk+-2.0.5/gdk/x11' make[3]: Nothing to be done for `all'. make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk/x11' make[3]: Entering directory `/software/scratch/gtk+-2.0.5/gdk' make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk' make[2]: Leaving directory `/software/scratch/gtk+-2.0.5/gdk' Making all in gtk make[2]: Entering directory `/software/scratch/gtk+-2.0.5/gtk' Making all in stock-icons make[3]: Entering directory `/software/scratch/gtk+-2.0.5/gtk/stock-icons' GDK_PIXBUF_MODULEDIR=../../gdk-pixbuf ../../gdk-pixbuf/gdk-pixbuf-csource \ --raw --build-list stock_add_16 ./stock_add_16.png stock_add_24 ./stock_add_24.png stock_align_center_16 ./stock_align_center_16.png stock_align_center_24 ./stock_align_center_24.png stock_align_justify_16 ./stock_align_justify_16.png stock_align_justify_24 ./stock_align_justify_24.png stock_align_left_16 ./stock_align_left_16.png stock_align_left_24 ./stock_align_left_24.png stock_align_right_16 ./stock_align_right_16.png stock_align_right_24 ./stock_align_right_24.png stock_apply_20 ./stock_apply_20.png stock_cancel_20 ./stock_cancel_20.png stock_dnd_multiple_32 ./stock_dnd_multiple_32.png stock_bottom_16 ./stock_bottom_16.png stock_bottom_24 ./stock_bottom_24.png stock_cdrom_16 ./stock_cdrom_16.png stock_cdrom_24 ./stock_cdrom_24.png stock_clear_24 ./stock_clear_24.png stock_close_20 ./stock_close_20.png stock_close_24 ./stock_close_24.png stock_colorselector_24 ./stock_colorselector_24.png > ./gtkstockpixbufs.h || \ ( rm -f ./gtkstockpixbufs.h && false ) failed to load "./stock_add_16.png": Image type 'png' is not supported make[3]: *** [gtkstockpixbufs.h] Error 1 make[3]: Leaving directory `/software/scratch/gtk+-2.0.5/gtk/stock-icons' make[2]: *** [all-recursive] Error 1 make[2]: Leaving directory `/software/scratch/gtk+-2.0.5/gtk' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/software/scratch/gtk+-2.0.5' make: *** [all-recursive-am] Error 2
Hi, I tried also: ./configure --prefix=/software/@sys/usr --disable-modules --disable-glibtest --enable-static=yes --with-libpng --with-included-loaders=PNG,JPEG,TIFF but I got: checking whether to build gmodulized gdk-pixbuf... no checking for TIFFReadScanline in -ltiff... yes checking tiffio.h usability... yes checking tiffio.h presence... yes checking for tiffio.h... yes checking for jpeg_destroy_decompress in -ljpeg... yes checking for jpeglib.h... yes checking for jpeg_simple_progression in -ljpeg... yes checking for libpng12... no checking for png_read_info in -lpng... yes checking png.h usability... yes checking png.h presence... yes checking for png.h... yes checking for png_structp in png.h... yes checking pixbuf loaders to build... PNG,JPEG,TIFF configure: error: the specified loader PNG does not exist Sorry, but this is at least documentation lack. What should I pass to this option? Even web doc says only: [--with-included-loaders==LOADER1,LOADER2,...] --with-included-loaders. This option allows you to specify which image loaders you want to include; for example, you might include only the PNG loader to create a smaller GdkPixbuf binary. That's not enough. It's not clear what should that LOADER1,LOADER2 be!
Looks related to bug 78302 ... maybe the same libtool bug.
*** This bug has been marked as a duplicate of 78302 ***