GNOME Bugzilla – Bug 120953
undefined references with libtool <1.5 on Win32 (MinGW)
Last modified: 2005-07-27 08:53:42 UTC
When compiling GIMP 1.3 from CVS on Win32 (using gcc 3.2.3), make fails with the following messages: /bin/sh ../libtool --mode=link gcc -Ic:/usr/src/include -Wall -mms-bitfields -Lc:/usr/src/lib -o libgimpui-1.3.la -rpath /c/temp/gimp1.3/lib -version-info 19:0:0 -no-undefined -export-symbols gimpui.def gimpui.lo gimpmenu.lo gimpmiscui.lo gimpbrushmenu.lo gimpfontmenu.lo gimpgradientmenu.lo gimppatternmenu.lo gimpexport.lo ./libgimp-1.3.la ../libgimpwidgets/libgimpwidgets-1.3.la ../libgimpcolor/libgimpcolor-1.3.la ../libgimpbase/libgimpbase-1.3.la -LC:/USR/SRC/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv rm -fr .libs/libgimpui-1.3.a .libs/libgimpui-1.3.dll.a .libs/libgimpui-1.3.la .libs/libgimpui-1.3.lai gcc -shared .libs/gimpui.o .libs/gimpmenu.o .libs/gimpmiscui.o .libs/gimpbrushmenu.o .libs/gimpfontmenu.o .libs/gimpgradientmenu.o .libs/gimppatternmenu.o .libs/gimpexport.o -L/c/usr/compile/gimp/libgimpbase/.libs -LC:/USR/SRC/lib -L/c/usr/compile/gimp/libgimpcolor/.libs -Lc:/usr/src/lib ./.libs/libgimp-1.3.dll.a ../libgimpwidgets/.libs/libgimpwidgets-1.3.dll.a ../libgimpcolor/.libs/libgimpcolor-1.3.dll.a ../libgimpbase/.libs/libgimpbase-1.3.dll.a -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv -mms-bitfields -o .libs/libgimpui-1.3-19.dll -Wl,-retain-symbols-file -Wl,gimpui.def -Wl,--out-implib,.libs/libgimpui-1.3.dll.a Creating library file: .libs/libgimpui-1.3.dll.a .libs/gimpui.o(.text+0x15a):gimpui.c: undefined reference to `gimp_min_colors' .libs/gimpui.o(.text+0x171):gimpui.c: undefined reference to `gimp_install_cmap' .libs/gimpui.o(.text+0x1a5):gimpui.c: undefined reference to `gimp_gamma' .libs/gimpui.o(.text+0x1c2):gimpui.c: undefined reference to `gimp_unit_get_number_of_units' .libs/gimpui.o(.text+0x1c9):gimpui.c: undefined reference to `gimp_unit_get_number_of_built_in_units' .libs/gimpui.o(.text+0x1d0):gimpui.c: undefined reference to `gimp_unit_get_factor' .libs/gimpui.o(.text+0x1d7):gimpui.c: undefined reference to `gimp_unit_get_digits' .libs/gimpui.o(.text+0x1de):gimpui.c: undefined reference to `gimp_unit_get_identifier' .libs/gimpui.o(.text+0x1e5):gimpui.c: undefined reference to `gimp_unit_get_symbol' .libs/gimpui.o(.text+0x1ec):gimpui.c: undefined reference to `gimp_unit_get_abbreviation' .libs/gimpui.o(.text+0x1f3):gimpui.c: undefined reference to `gimp_unit_get_singular' .libs/gimpui.o(.text+0x1fa):gimpui.c: undefined reference to `gimp_unit_get_plural' .libs/gimpui.o(.text+0x1ff):gimpui.c: undefined reference to `gimp_palette_get_background' .libs/gimpui.o(.text+0x204):gimpui.c: undefined reference to `gimp_palette_get_foreground' .libs/gimpui.o(.text+0x21a):gimpui.c: undefined reference to `gimp_show_tool_tips' .libs/gimpui.o(.text+0x244):gimpui.c: undefined reference to `gimp_get_progname' .libs/gimpui.o(.text+0x24d):gimpui.c: undefined reference to `gimp_help' .libs/gimpui.o(.text+0x24d):gimpui.c: undefined reference to `gimp_help' .libs/gimpmenu.o(.text+0xe1):gimpmenu.c: undefined reference to `gimp_image_list' .libs/gimpmenu.o(.text+0x149):gimpmenu.c: undefined reference to `gimp_image_get_name' .libs/gimpmenu.o(.text+0x2e4):gimpmenu.c: undefined reference to `gimp_image_list' .libs/gimpmenu.o(.text+0x34c):gimpmenu.c: undefined reference to `gimp_image_get_name' .libs/gimpmenu.o(.text+0x3a2):gimpmenu.c: undefined reference to `gimp_image_get_layers' .libs/gimpmenu.o(.text+0x411):gimpmenu.c: undefined reference to `gimp_layer_get_name' .libs/gimpmenu.o(.text+0x5a0):gimpmenu.c: undefined reference to `gimp_image_list' .libs/gimpmenu.o(.text+0x608):gimpmenu.c: undefined reference to `gimp_image_get_name' .libs/gimpmenu.o(.text+0x65e):gimpmenu.c: undefined reference to `gimp_image_get_channels' .libs/gimpmenu.o(.text+0x6cd):gimpmenu.c: undefined reference to `gimp_channel_get_name' .libs/gimpmenu.o(.text+0x807):gimpmenu.c: undefined reference to `gimp_image_list' .libs/gimpmenu.o(.text+0x86f):gimpmenu.c: undefined reference to `gimp_image_get_name' .libs/gimpmenu.o(.text+0x8c5):gimpmenu.c: undefined reference to `gimp_image_get_layers' .libs/gimpmenu.o(.text+0x8e7):gimpmenu.c: undefined reference to `gimp_image_get_channels' .libs/gimpmenu.o(.text+0x956):gimpmenu.c: undefined reference to `gimp_layer_get_name' .libs/gimpmenu.o(.text+0xa62):gimpmenu.c: undefined reference to `gimp_channel_get_name' .libs/gimpmenu.o(.text+0xf17):gimpmenu.c: undefined reference to `gimp_image_get_thumbnail_data' .libs/gimpmenu.o(.text+0xf33):gimpmenu.c: undefined reference to `gimp_drawable_get_thumbnail_data' .libs/gimpmiscui.o(.text+0xbee):gimpmiscui.c: undefined reference to `gimp_drawable_get_thumbnail_data' .libs/gimpmiscui.o(.text+0xc29):gimpmiscui.c: undefined reference to `gimp_drawable_is_indexed' .libs/gimpmiscui.o(.text+0xc3b):gimpmiscui.c: undefined reference to `gimp_drawable_image' .libs/gimpmiscui.o(.text+0xc56):gimpmiscui.c: undefined reference to `gimp_image_get_cmap' .libs/gimpmiscui.o(.text+0xcaa):gimpmiscui.c: undefined reference to `gimp_drawable_width' .libs/gimpmiscui.o(.text+0xccf):gimpmiscui.c: undefined reference to `gimp_drawable_height' .libs/gimpmiscui.o(.text+0xdfe):gimpmiscui.c: undefined reference to `gimp_drawable_mask_bounds' .libs/gimpmiscui.o(.text+0xe56):gimpmiscui.c: undefined reference to `gimp_drawable_bytes' .libs/gimpmiscui.o(.text+0xe69):gimpmiscui.c: undefined reference to `gimp_drawable_is_indexed' .libs/gimpmiscui.o(.text+0xe7d):gimpmiscui.c: undefined reference to `gimp_drawable_image' .libs/gimpmiscui.o(.text+0xe98):gimpmiscui.c: undefined reference to `gimp_image_get_cmap' .libs/gimpmiscui.o(.text+0xef4):gimpmiscui.c: undefined reference to `gimp_pixel_rgn_init' .libs/gimpmiscui.o(.text+0xfa3):gimpmiscui.c: undefined reference to `gimp_pixel_rgn_get_row' .libs/gimpmiscui.o(.text+0x10c2):gimpmiscui.c: undefined reference to `gimp_drawable_mask_bounds' .libs/gimpmiscui.o(.text+0x116c):gimpmiscui.c: undefined reference to `gimp_drawable_bytes' .libs/gimpmiscui.o(.text+0x117f):gimpmiscui.c: undefined reference to `gimp_drawable_is_indexed' .libs/gimpmiscui.o(.text+0x1193):gimpmiscui.c: undefined reference to `gimp_drawable_image' .libs/gimpmiscui.o(.text+0x11ae):gimpmiscui.c: undefined reference to `gimp_image_get_cmap' .libs/gimpmiscui.o(.text+0x12ac):gimpmiscui.c: undefined reference to `gimp_pixel_fetcher_new' .libs/gimpmiscui.o(.text+0x1328):gimpmiscui.c: undefined reference to `gimp_pixel_fetcher_get_pixel' .libs/gimpmiscui.o(.text+0x1375):gimpmiscui.c: undefined reference to `gimp_pixel_fetcher_destroy' .libs/gimpmiscui.o(.text+0x1535):gimpmiscui.c: undefined reference to `gimp_gimprc_query' .libs/gimpbrushmenu.o(.text+0x37c):gimpbrushmenu.c: undefined reference to `gimp_brushes_get_brush_data' .libs/gimpbrushmenu.o(.text+0x512):gimpbrushmenu.c: undefined reference to `gimp_brush_select_destroy' .libs/gimpbrushmenu.o(.text+0x5e0):gimpbrushmenu.c: undefined reference to `gimp_brushes_set_popup' .libs/gimpbrushmenu.o(.text+0x60c):gimpbrushmenu.c: undefined reference to `gimp_brushes_get_brush_data' .libs/gimpbrushmenu.o(.text+0x7db):gimpbrushmenu.c: undefined reference to `gimp_brushes_set_popup' .libs/gimpbrushmenu.o(.text+0x810):gimpbrushmenu.c: undefined reference to `gimp_brush_select_new' .libs/gimpbrushmenu.o(.text+0x839):gimpbrushmenu.c: undefined reference to `gimp_brush_select_destroy' .libs/gimpfontmenu.o(.text+0x392):gimpfontmenu.c: undefined reference to `gimp_font_select_destroy' .libs/gimpfontmenu.o(.text+0x437):gimpfontmenu.c: undefined reference to `gimp_fonts_set_popup' .libs/gimpfontmenu.o(.text+0x50c):gimpfontmenu.c: undefined reference to `gimp_fonts_set_popup' .libs/gimpfontmenu.o(.text+0x52c):gimpfontmenu.c: undefined reference to `gimp_font_select_new' .libs/gimpfontmenu.o(.text+0x555):gimpfontmenu.c: undefined reference to `gimp_font_select_destroy' .libs/gimpgradientmenu.o(.text+0x279):gimpgradientmenu.c: undefined reference to `gimp_gradients_get_gradient_data' .libs/gimpgradientmenu.o(.text+0x394):gimpgradientmenu.c: undefined reference to `gimp_gradient_select_destroy' .libs/gimpgradientmenu.o(.text+0x455):gimpgradientmenu.c: undefined reference to `gimp_gradients_set_popup' .libs/gimpgradientmenu.o(.text+0x479):gimpgradientmenu.c: undefined reference to `gimp_gradients_get_gradient_data' .libs/gimpgradientmenu.o(.text+0x568):gimpgradientmenu.c: undefined reference to `gimp_gradients_set_popup' .libs/gimpgradientmenu.o(.text+0x591):gimpgradientmenu.c: undefined reference to `gimp_gradient_select_new' .libs/gimpgradientmenu.o(.text+0x5b9):gimpgradientmenu.c: undefined reference to `gimp_gradient_select_destroy' .libs/gimppatternmenu.o(.text+0x387):gimppatternmenu.c: undefined reference to `gimp_patterns_get_pattern_data' .libs/gimppatternmenu.o(.text+0x4b4):gimppatternmenu.c: undefined reference to `gimp_pattern_select_destroy' .libs/gimppatternmenu.o(.text+0x578):gimppatternmenu.c: undefined reference to `gimp_patterns_set_popup' .libs/gimppatternmenu.o(.text+0x59c):gimppatternmenu.c: undefined reference to `gimp_patterns_get_pattern_data' .libs/gimppatternmenu.o(.text+0x6ea):gimppatternmenu.c: undefined reference to `gimp_patterns_set_popup' .libs/gimppatternmenu.o(.text+0x70a):gimppatternmenu.c: undefined reference to `gimp_pattern_select_new' .libs/gimppatternmenu.o(.text+0x733):gimppatternmenu.c: undefined reference to `gimp_pattern_select_destroy' .libs/gimpexport.o(.text+0x1b):gimpexport.c: undefined reference to `gimp_image_get_layers' .libs/gimpexport.o(.text+0x4a):gimpexport.c: undefined reference to `gimp_drawable_visible' .libs/gimpexport.o(.text+0x76):gimpexport.c: undefined reference to `gimp_drawable_type' .libs/gimpexport.o(.text+0x88):gimpexport.c: undefined reference to `gimp_image_height' .libs/gimpexport.o(.text+0x97):gimpexport.c: undefined reference to `gimp_image_width' .libs/gimpexport.o(.text+0xa8):gimpexport.c: undefined reference to `gimp_layer_new' .libs/gimpexport.o(.text+0xbe):gimpexport.c: undefined reference to `gimp_image_add_layer' .libs/gimpexport.o(.text+0xcc):gimpexport.c: undefined reference to `gimp_selection_none' .libs/gimpexport.o(.text+0xda):gimpexport.c: undefined reference to `gimp_edit_clear' .libs/gimpexport.o(.text+0x107):gimpexport.c: undefined reference to `gimp_image_merge_visible_layers' .libs/gimpexport.o(.text+0x12e):gimpexport.c: undefined reference to `gimp_image_get_layers' .libs/gimpexport.o(.text+0x13f):gimpexport.c: undefined reference to `gimp_drawable_width' .libs/gimpexport.o(.text+0x14f):gimpexport.c: undefined reference to `gimp_image_width' .libs/gimpexport.o(.text+0x161):gimpexport.c: undefined reference to `gimp_drawable_height' .libs/gimpexport.o(.text+0x171):gimpexport.c: undefined reference to `gimp_image_height' .libs/gimpexport.o(.text+0x18d):gimpexport.c: undefined reference to `gimp_drawable_offsets' .libs/gimpexport.o(.text+0x1a4):gimpexport.c: undefined reference to `gimp_image_height' .libs/gimpexport.o(.text+0x1b3):gimpexport.c: undefined reference to `gimp_image_width' .libs/gimpexport.o(.text+0x1bf):gimpexport.c: undefined reference to `gimp_layer_resize' .libs/gimpexport.o(.text+0x205):gimpexport.c: undefined reference to `gimp_image_remove_layer' .libs/gimpexport.o(.text+0x233):gimpexport.c: undefined reference to `gimp_image_flatten' .libs/gimpexport.o(.text+0x25b):gimpexport.c: undefined reference to `gimp_convert_rgb' .libs/gimpexport.o(.text+0x271):gimpexport.c: undefined reference to `gimp_convert_grayscale' .libs/gimpexport.o(.text+0x290):gimpexport.c: undefined reference to `gimp_image_get_layers' .libs/gimpexport.o(.text+0x2af):gimpexport.c: undefined reference to `gimp_drawable_has_alpha' .libs/gimpexport.o(.text+0x2d5):gimpexport.c: undefined reference to `gimp_convert_indexed' .libs/gimpexport.o(.text+0x2f7):gimpexport.c: undefined reference to `gimp_convert_indexed' .libs/gimpexport.o(.text+0x311):gimpexport.c: undefined reference to `gimp_image_get_layers' .libs/gimpexport.o(.text+0x340):gimpexport.c: undefined reference to `gimp_drawable_has_alpha' .libs/gimpexport.o(.text+0x35f):gimpexport.c: undefined reference to `gimp_layer_add_alpha' .libs/gimpexport.o(.text+0x16c6):gimpexport.c: undefined reference to `gimp_drawable_is_layer' .libs/gimpexport.o(.text+0x16ec):gimpexport.c: undefined reference to `gimp_drawable_is_layer_mask' .libs/gimpexport.o(.text+0x172d):gimpexport.c: undefined reference to `gimp_drawable_is_channel' .libs/gimpexport.o(.text+0x179e):gimpexport.c: undefined reference to `gimp_image_get_layers' .libs/gimpexport.o(.text+0x17d0):gimpexport.c: undefined reference to `gimp_drawable_has_alpha' .libs/gimpexport.o(.text+0x1821):gimpexport.c: undefined reference to `gimp_layer_get_visible' .libs/gimpexport.o(.text+0x188a):gimpexport.c: undefined reference to `gimp_drawable_is_layer' .libs/gimpexport.o(.text+0x18b8):gimpexport.c: undefined reference to `gimp_drawable_offsets' .libs/gimpexport.o(.text+0x18c8):gimpexport.c: undefined reference to `gimp_layer_get_opacity' .libs/gimpexport.o(.text+0x18e7):gimpexport.c: undefined reference to `gimp_image_width' .libs/gimpexport.o(.text+0x18f9):gimpexport.c: undefined reference to `gimp_drawable_width' .libs/gimpexport.o(.text+0x190d):gimpexport.c: undefined reference to `gimp_image_height' .libs/gimpexport.o(.text+0x191f):gimpexport.c: undefined reference to `gimp_drawable_height' .libs/gimpexport.o(.text+0x1a35):gimpexport.c: undefined reference to `gimp_image_base_type' .libs/gimpexport.o(.text+0x1c3e):gimpexport.c: undefined reference to `gimp_image_duplicate' .libs/gimpexport.o(.text+0x1c55):gimpexport.c: undefined reference to `gimp_image_get_active_layer' .libs/gimpexport.o(.text+0x1c6c):gimpexport.c: undefined reference to `gimp_image_undo_disable' make[2]: *** [libgimpui-1.3.la] Error 1 make[2]: Leaving directory `/c/usr/compile/gimp/libgimp' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/c/usr/compile/gimp' make: *** [all] Error 2 =================================== There is a workaround - in the file libgimp-1.3.la, change library_names='libgimp-1.3.dll.a' to library_names='libgimp-1.3.a' Is there something wrong with GIMP, or is this a problem of the MinGW environment? BTW, a similiar problem happens with libgimpui-1.3.la, changing 'library_names' to 'libgimpui-1.3.a' solves it, too.
Seems like libtool 1.5 fixes this - too bad that the current stable MinGW doesn't include it, just libtool 1.4e. Will try to verify this on another system.
Ok, confirmed it - libtool 1.5 fixes this problem. This should be documented somewhere.
Would it make sense to start building the tarballs with libtool-1.5? The machine that I usually use to build them would need an update but if it would help, I could try to use libtool from debian unstable. Are people attempting win32 builds from the tarball at all?
Probably worth doing so, and also checking that the user has at least libtool 1.5 on win32 in autogen.sh. Though I wish there was a separate libtool for windows so it doesn't penalize the rest of us....
Do you expect any problems for the UNIX builds when we switch to libtool-1.5 ?
No. It has some bugs, but not something that can't be worked around (and almost all users won't hit them anyway). My issue with libtool win32 support is that it adds a crapload of complexity to an already complex shell script, which makes debugging a lot harder, as well as slowing down compiles with all that parsing. Ok, my real issue with libtool is that it's implementation assumption of running it on every compile is completely braindead.
How would one check for win32 in autogen.sh? I would like to get this bug closed...
uname -s should work, and check for CYGWIN*|MINGW*
2003-09-03 Sven Neumann <sven@gimp.org> * HACKING * autogen.sh: require libtool version 1.5.0 or newer when building on Win32. Completely untested but it should fix bug #120953.
*** Bug 140336 has been marked as a duplicate of this bug. ***
*** Bug 152433 has been marked as a duplicate of this bug. ***
*** Bug 154867 has been marked as a duplicate of this bug. ***