L.inker errors in compiling l.atest G.T.K.+

sowiso sowiso_privAT@gmx.at
Fri Dec 5 21:04:00 GMT 2008

[I apologize for the ugly subject format, but after running 3 times into
the spam script, I was getting tired of it. Sourceware should really fix
its broken detection routines.]


I'm simply unable to build latest GTK+ (2.14.5) on cygwin atm.
I have a bit of building experience, though, so it might simply be a
Cygwin-specific thing I don't know about.
(NOTE: This may be a long post.)

First of all, the GTK+ tree seems to have some bugs:

[0] Preamble: -lintl is always linked in TWICE - this is nonsense.
Commenting out LIBS = -lintl in the Makefile(s) did the trick.

[1] BOTH -export-symbols and -export-symbols-regex were specified.
This lead to a fatal error, since these are mutually exclusive an must
not be specified at the very same time.
#Commenting out the line
LIBTOOL_EXPORT_OPTIONS = -export-symbols-regex "^[^_].*"
let me continue without problems.

[2] On Cygwin, WINDRES environment variable in gdk/win32/rc was not
recognized, transforming this line in the Makefile:
$(WINDRES) gdk.rc $@
gdk.rc $@

This resulted in lots of ugly errors. When completing the line WINDRES =
/usr/bin/windres in the parent Makefile, everything worked up to ...

[3] ... this point. Lots of coffee breaks later, it breaks off at this
LONG line:

libtool: link: if test "x`/usr/bin/sed 1q ./gdk.def`" = xEXPORTS; then
cp ./gdk.def .libs/cyggdk-win32-2.0-0.dll.def; else echo EXPORTS >
.libs/cyggdk-win32-2.0-0.dll.def; cat ./gdk.def >>
.libs/cyggdk-win32-2.0-0.dll.def; fi
libtool: link:  gcc -shared .libs/cyggdk-win32-2.0-0.dll.def
.libs/gdk.o .libs/gdkapplaunchcontext.o .libs/gdkcairo.o
.libs/gdkcolor.o .libs/gdkcursor.o .libs/gdkdisplay.o
.libs/gdkdisplaymanager.o .libs/gdkdnd.o .libs/gdkdraw.o
.libs/gdkevents.o .libs/gdkfont.o .libs/gdkgc.o .libs/gdkglobals.o
.libs/gdkimage.o .libs/gdkkeys.o .libs/gdkkeyuni.o .libs/gdkpango.o
.libs/gdkpixbuf-drawable.o .libs/gdkpixbuf-render.o .libs/gdkpixmap.o
.libs/gdkpolyreg-generic.o .libs/gdkrectangle.o
.libs/gdkregion-generic.o .libs/gdkrgb.o .libs/gdkscreen.o
.libs/gdkselection.o .libs/gdkvisual.o .libs/gdkwindow.o
.libs/gdkwindowimpl.o .libs/gdkenumtypes.o
libs/gdkkeynames.o  -Wl,--whole-archive
win32/.libs/libgdk-win32.a -Wl,--no-whole-archive  -L/usr/lib -limm32 -l
shell32 -lole32 /usr/lib/libcairo.dll.a -lmsimg32 -lgdi32
/usr/lib/libpixman-1.dll.a -lpng12 /usr/lib/libXrender.dll.a
/usr/lib/libX11.dll.a /usr/lib/libxcb-xlib.dll.a /usr/lib/libxcb.dll.a
/usr/lib/libXau.dll.a /usr/lib/libXdmcp.dll.a
/usr/lib/libfontconfig.dll.a /usr/lib/libexpat.dll.a
/usr/lib/libfreetype.dll.a -lz
../gdk-pixbuf/.libs/libgdk_pixbuf-2.0.dll.a /usr/lib/libgio-2.0.dll.a
/usr/lib/libgobject-2.0.dll.a /usr/lib/libgmodule-2.0.dll.a
/usr/lib/libglib-2.0.dll.a -luser32 -lkernel32 /usr/lib/libintl.dll.a
/usr/lib/libiconv.dll.a  -Wl,win32/rc/gdk-win32-res.o -Wl,-luuid   -o
.libs/cyggdk-win32-2.0-0.dll -Wl,--enable-auto-image-base -Xlinker --out
-implib -Xlinker .libs/libgdk-win32-2.0.dll.a

Creating library file: .libs/libgdk-win32-2.0.dll.a

.libs/gdkcolor.o: In function `gdk_color_to_string':
/home/Administrator/build/gtk+-2.14.5/gdk/gdkcolor.c:376: undefined
reference to `_pango_color_to_string'
.libs/gdkcolor.o: In function `gdk_color_parse':
/home/Administrator/build/gtk+-2.14.5/gdk/gdkcolor.c:340: undefined
reference to `_pango_color_parse'

[BIG SNIP - 50 undefined pango_* references later...]

.libs/gdkpango.o: In function `gdk_pango_renderer_draw_glyphs':
/home/Administrator/build/gtk+-2.14.5/gdk/gdkpango.c:251: undefined
reference to `_pango_cairo_show_glyph_string'
win32/.libs/libgdk-win32.a(gdkfont-win32.o): In function
undefined reference to `_pango_font_description_get_size'
collect2: ld returned 1 exit status
make[4]: *** [libgdk-win32-2.0.la] Error 1
make[4]: Leaving directory `/home/Administrator/build/gtk+-2.14.5/gdk'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/home/Administrator/build/gtk+-2.14.5/gdk'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/Administrator/build/gtk+-2.14.5/gdk'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/Administrator/build/gtk+-2.14.5'
make: *** [all] Error 2

I do have a theory, though.
Pango is trunk and has been built without problems, BUT ...
As I could see, although _explicitly_ specifying
--enable-shared --enable-static

the libpango*.dll.a files are still from 2005. But probably the compiler
*does* need this .dll.a badly! Yet I'm unable to build a .dll.a, instead
I get:

Warning: This system can not link to static lib archive
I have the capability to make that library automatically link in where
you link this library.
But I can only do this if you have a shared version of the library,
which you do not appear to have.

Has anyone ever fiddled with this recently?
I'd appreciate any help on this.


Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

More information about the Cygwin mailing list