GNOME Bugzilla – Bug 612924
Build failure: missing link against direct dependent libs
Last modified: 2010-10-11 02:03:02 UTC
Building the webkit branch (clone of debian's 2.28.0+webkit package) on OS X 10.4/ppc (with all dependencies at the level of GNOME2.28 current releases) fails during final linking. /bin/sh ../libtool --tag=CC --mode=link gcc -I/sw/include/glib-2.0 -I/sw/lib/glib-2.0/include -I/sw/lib/fontconfig2/include -I/sw/include/gconf/2 -I/sw/include/gtk-unix-print-2.0 -I/sw/include/gtk-2.0 -I/sw/include/atk-1.0 -I/sw/include/cairo -I/sw/include/pango-1.0 -I/sw/lib/gtk-2.0/include -I/sw/include/pixman-1 -I/sw/include/freetype2 -I/sw/include -I/sw/include/libxml2 -I/sw/include/startup-notification-1.0 -I/sw/include/dbus-1.0 -I/sw/lib/dbus-1.0/include -I/sw/include/rarian -I/usr/X11R6/include -I/usr/X11/include -Wall -Wno-uninitialized -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -I/sw/include/glib-2.0 -I/sw/lib/glib-2.0/include -I/sw/lib/fontconfig2/include -I/sw/include/webkit-1.0 -I/sw/include/gtk-2.0 -I/sw/include/libsoup-2.4 -I/sw/lib/gtk-2.0/include -I/sw/include/atk-1.0 -I/sw/include/cairo -I/sw/include/pango-1.0 -I/sw/include/pixman-1 -I/sw/include/freetype2 -I/sw/include -I/usr/X11R6/include -I/usr/X11/include -g -O2 -L/sw/lib -o yelp yelp-yelp-base.o yelp-yelp-bookmarks.o yelp-yelp-debug.o yelp-yelp-error.o yelp-yelp-html.o yelp-yelp-io-channel.o yelp-yelp-settings.o yelp-yelp-utils.o yelp-yelp-window.o yelp-yelp-marshal.o yelp-yelp-main.o yelp-yelp-page.o yelp-yelp-transform.o yelp-yelp-document.o yelp-yelp-toc.o yelp-yelp-docbook.o yelp-yelp-db-print.o yelp-yelp-mallard.o yelp-yelp-man-parser.o yelp-yelp-man.o yelp-yelp-info.o yelp-yelp-info-parser.o yelp-gtkentryaction.o yelp-yelp-search.o yelp-yelp-search-parser.o yelp-eggdesktopfile.o yelp-eggsmclient.o yelp-eggsmclient-xsmp.o -L/sw/lib -L/sw/lib/fontconfig2/lib -lgconf-2 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgmodule-2.0 -lexslt -lxslt -lz -liconv -lm -lxml2 -lstartup-notification-1 -ldbus-glib-1 -ldbus-1 -lpthread -lgobject-2.0 -lglib-2.0 -lrarian -lz -lbz2 -L/sw/lib -L/sw/lib/fontconfig2/lib -lwebkit-1.0 -lgtk-x11-2.0 -lsoup-2.4 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgio-2.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lSM -lICE -L/usr/X11R6/lib -lX11 -lSM -L/usr/X11/lib -L/usr/X11R6/lib libtool: link: gcc -I/sw/include/glib-2.0 -I/sw/lib/glib-2.0/include -I/sw/lib/fontconfig2/include -I/sw/include/gconf/2 -I/sw/include/gtk-unix-print-2.0 -I/sw/include/gtk-2.0 -I/sw/include/atk-1.0 -I/sw/include/cairo -I/sw/include/pango-1.0 -I/sw/lib/gtk-2.0/include -I/sw/include/pixman-1 -I/sw/include/freetype2 -I/sw/include -I/sw/include/libxml2 -I/sw/include/startup-notification-1.0 -I/sw/include/dbus-1.0 -I/sw/lib/dbus-1.0/include -I/sw/include/rarian -I/usr/X11R6/include -I/usr/X11/include -Wall -Wno-uninitialized -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -Wall -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-sign-compare -I/sw/include/glib-2.0 -I/sw/lib/glib-2.0/include -I/sw/lib/fontconfig2/include -I/sw/include/webkit-1.0 -I/sw/include/gtk-2.0 -I/sw/include/libsoup-2.4 -I/sw/lib/gtk-2.0/include -I/sw/include/atk-1.0 -I/sw/include/cairo -I/sw/include/pango-1.0 -I/sw/include/pixman-1 -I/sw/include/freetype2 -I/sw/include -I/usr/X11R6/include -I/usr/X11/include -g -O2 -o yelp yelp-yelp-base.o yelp-yelp-bookmarks.o yelp-yelp-debug.o yelp-yelp-error.o yelp-yelp-html.o yelp-yelp-io-channel.o yelp-yelp-settings.o yelp-yelp-utils.o yelp-yelp-window.o yelp-yelp-marshal.o yelp-yelp-main.o yelp-yelp-page.o yelp-yelp-transform.o yelp-yelp-document.o yelp-yelp-toc.o yelp-yelp-docbook.o yelp-yelp-db-print.o yelp-yelp-mallard.o yelp-yelp-man-parser.o yelp-yelp-man.o yelp-yelp-info.o yelp-yelp-info-parser.o yelp-gtkentryaction.o yelp-yelp-search.o yelp-yelp-search-parser.o yelp-eggdesktopfile.o yelp-eggsmclient.o yelp-eggsmclient-xsmp.o -L/sw/lib -L/sw/lib/fontconfig2/lib /sw/lib/libgconf-2.dylib /sw/lib/libexslt.dylib /sw/lib/libxslt.dylib /sw/lib/libiconv.dylib -lm /sw/lib/libxml2.dylib /sw/lib/libstartup-notification-1.dylib /sw/lib/libdbus-glib-1.dylib /sw/lib/libdbus-1.dylib -lpthread /sw/lib/librarian.dylib -lz -lbz2 /sw/lib/libwebkit-1.0.dylib /sw/lib/libgtk-x11-2.0.dylib /sw/lib/libsoup-2.4.dylib /sw/lib/libgdk-x11-2.0.dylib /sw/lib/libatk-1.0.dylib /sw/lib/pango-ft219/lib/libpangoft2-1.0.dylib /sw/lib/libgdk_pixbuf-2.0.dylib /sw/lib/pango-ft219/lib/libpangocairo-1.0.dylib /sw/lib/libcairo.dylib /sw/lib/pango-ft219/lib/libpango-1.0.dylib /sw/lib/freetype219/lib/libfreetype.dylib /sw/lib/fontconfig2/lib/libfontconfig.dylib /sw/lib/libgio-2.0.dylib /sw/lib/libgobject-2.0.dylib /sw/lib/libgmodule-2.0.dylib /sw/lib/libglib-2.0.dylib -lICE -L/usr/X11R6/lib -lX11 -lSM -L/usr/X11/lib /usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: warning -L: directory name (/usr/X11/lib) does not exist /usr/libexec/gcc/powerpc-apple-darwin8/4.0.1/ld: Undefined symbols: _libintl_gettext _g_thread_init _libintl_bind_textdomain_codeset _libintl_bindtextdomain _libintl_textdomain collect2: ld returned 1 exit status make[3]: *** [yelp] Error 1 3 semi-separate issues here: 1. Pedantic cleanup: passing tons of -I to linker is pointless and makes it harder to read the build log to trace actual problems. The FOO_CFLAGS from PKG_CHECK_MODULES(FOO) is called "CFLAGS" but it's really compile-stage (.c->.o) flags not general C flags (for all contexts of gcc). That's not the same as the automake/libtool meaning of a &_CFLAGS variable (which is for all contexts) compared to *_CPPFLAGS (which is for .c->.o). Saner I think to pass pPKG_CHECK_MODULES CFLAGS via makefile CPPFLAGS in src/Makefile.am. 2. src/yelp-main.c uses g_thread but configure does not check for and propagate linker flags for libgthread. Probably works on linux because some other specified dependency does link against libgthread and propagates the linker flag via .la file or the linker does indirect symbol resolution. Fink is following apple's precedent (along with some other distros) of scrapping .la dependencies. And darwin's linker has never allowed indirect symbol resolution (and now some linux distros' linkers are behaving that way too). Quick fix is to add gthread-2.0 to the PKG_CHECK_MODULES(YELP) list. 3. yelp uses gettext directly but doesn't explicitly link against it directly. AM_GLIB_GNU_GETTEXT checks for the proper linker flags to use and sets a INTLLIBS automake variable, so just need to pass that along with other dependencies' linker flags.
Is this still a problem on master?
It will be a few weeks probably before I could have a chance to play with master. Feel free to leave this alone and I'll update when I am able.
can we close this bug?
I'm unable to jump to master or newer releases for the near future. May as well close and I'll reopen if it still is an issue
Closing this bug report as no further information has been provided. Please feel free to reopen this bug if you can provide the information asked for. Thanks!