Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Date: Mon, 12 Jan 2004 01:07:08 +0100 From: "Gerrit P. Haase" Reply-To: "Gerrit @ cygwin" Organization: Esse keine toten Tiere Message-ID: <894452201.20040112010708@familiehaase.de> To: "dominix" CC: "'Cygwin List'" , gtk-perl-list AT gnome DOT org Subject: Re: installing Gtk-Perl on cygwin (very long, but it actually works now;) In-Reply-To: <001f01c3d7e3$c5cb2a00$0100a8c0@adn.dyndns.info> References: <003b01c3d879$0e77cac0$0100a8c0 AT adn DOT dyndns DOT info>,<001f01c3d7e3$c5cb2a00$0100a8c0 AT adn DOT dyndns DOT info> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Hallo dominix, Am Sonntag, 11. Januar 2004 um 20:28 schriebst du: > hi everybody. > when trying to install Gtk-perl on cygwin [1.5.5] WinNT5 (XP) with > perl-5.8.2 > I got errors regarding specific symbols not found, and I'm not able > to build ImlibImage and the build process stop. > I'm stuck there. Any advice, recomendation, tip, fix, (blame ?) welcome > thanks for your time and attention. > #######################################################3 > cpan Gtk > ... > rm -f blib/arch/auto/Gtk/Gdk/ImlibImage/ImlibImage.dll > LD_RUN_PATH="" ld2 -s -L/usr/local/lib xs/GdkImlib.o -o > blib/arch/auto/Gtk/Gdk/ImlibImage/ImlibImage.dll > /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/libperl.dll.a -L/usr/X11 > R6/lib -L/opt/gnome/lib -lgthread -lgdk_imlib -lgtk -lgdk -lgmodule -lglib - > lintl -lXext -lX11 > gcc -shared -o > ImlibImage.dll -Wl,--out-implib=libImlibImage.dll.a -Wl,--export-all-symbols > -Wl,--enable-auto-import -Wl,--stack,8388608 \ > -s -L/usr/local/lib xs/GdkImlib.o > /usr/lib/perl5/5.8.2/cygwin-thread-multi-64int/CORE/libperl.dll.a -L/usr/X11 > R6/lib -L/opt/gnome/lib -lgthread -lgdk_imlib -lgtk -lgdk -lgmodule -lglib - > lintl -lXext -lX11 > Creating library file: libImlibImage.dll.a > xs/GdkImlib.o(.text+0x38):GdkImlib.c: undefined reference to `_newSVMiscRef' > xs/GdkImlib.o(.text+0x59):GdkImlib.c: undefined reference to `_SvMiscRef' > xs/GdkImlib.o(.text+0x301):GdkImlib.c: undefined reference to > `_pgtk_alloc_temp' > xs/GdkImlib.o(.text+0x974):GdkImlib.c: undefined reference to > `_pgtk_alloc_temp' > xs/GdkImlib.o(.text+0xfcb):GdkImlib.c: undefined reference to `_SvGdkPixmap' > xs/GdkImlib.o(.text+0x122b):GdkImlib.c: undefined reference to > `_SvGdkBitmap' > xs/GdkImlib.o(.text+0x13a3):GdkImlib.c: undefined reference to > `_pgtk_did_we_init_gtk' > xs/GdkImlib.o(.text+0x327e):GdkImlib.c: undefined reference to > `_newSVGdkPixmap' > xs/GdkImlib.o(.text+0x355d):GdkImlib.c: undefined reference to > `_newSVGdkBitmap' > xs/GdkImlib.o(.text+0x383e):GdkImlib.c: undefined reference to > `_newSVGdkPixmap' > xs/GdkImlib.o(.text+0x3b02):GdkImlib.c: undefined reference to > `_newSVGdkBitmap' > xs/GdkImlib.o(.text+0x3e06):GdkImlib.c: undefined reference to > `_UnregisterMisc' > xs/GdkImlib.o(.text+0x4063):GdkImlib.c: undefined reference to > `_UnregisterMisc' > xs/GdkImlib.o(.text+0x42b5):GdkImlib.c: undefined reference to > `_UnregisterMisc' > xs/GdkImlib.o(.text+0x6419):GdkImlib.c: undefined reference to > `_newSVGdkPixmap' > xs/GdkImlib.o(.text+0x64bc):GdkImlib.c: undefined reference to > `_newSVGdkBitmap' > xs/GdkImlib.o(.text+0x9518):GdkImlib.c: undefined reference to > `_SvGdkWindow' > xs/GdkImlib.o(.text+0x9b3d):GdkImlib.c: undefined reference to > `_SvGdkWindow' > xs/GdkImlib.o(.text+0xa184):GdkImlib.c: undefined reference to > `_SvGdkWindow' > xs/GdkImlib.o(.text+0xb1a9):GdkImlib.c: undefined reference to > `_SvGdkBitmap' > xs/GdkImlib.o(.text+0xb58d):GdkImlib.c: undefined reference to > `_SvGdkWindow' > xs/GdkImlib.o(.text+0xd417):GdkImlib.c: undefined reference to > `_newSVGdkVisual' > xs/GdkImlib.o(.text+0xd679):GdkImlib.c: undefined reference to > `_newSVGdkColormap' > xs/GdkImlib.o(.text+0xe217):GdkImlib.c: undefined reference to > `_newSVGdkPixmap' > xs/GdkImlib.o(.text+0xe2ba):GdkImlib.c: undefined reference to > `_newSVGdkBitmap' > collect2: ld returned 1 exit status > perlld: *** system() failed to execute Ok, what I found: http://www.occamstoothbrush.com/perl/gtk-perl-cygwin-howto.txt from a thread on the gtk-perl list and here the story continues: http://mail.gnome.org/archives/gtk-perl-list/2001-November/msg00061.html I guess you have all the prerequisites installed (that is about all of the gnome desktop (http://cygnome.sf.net/ , Berkeley DB 3.1.17, Libexpat, and the XML::Parser & XML::Writer perl modules)? The interesting part at the website from the first link is part 4 (I did the same without specifying `--without-gnomeprint' because I have it here and it works too), everytime I got an error with these undefined refs I opened the current Makefile, appended `-L../blib/arch/auto/Gtk -lGtk' to the OTHERLDFLAGS library list (as suggested in the thread from the second link) run make again and voila, it works for GdkImlib. The same for the second module, but now I have some more undefined references, e.g. `_gtk_type_check_object_cast'. This is defined in libgtk: $ nm libgtk.dll.a | grep _gtk_type_check_object_cast 00000000 I __imp__gtk_type_check_object_cast 00000000 T _gtk_type_check_object_cast But the linkline is including libgtk and libGtk, hmmm I guess it is a problem with the case insensitivity on Windows, I tried to use check_case:strict env setting, fired up a new terminal with the new env setting in use and hey, what do you guess, it doesn't work. Seems the linker doesn't care about the case:strict setting:-( Ok, next try, make a copy from libGtk.dll.a to libGtkGtk.dll.a and changed the Makefile to use this libGtkGtk instead of libGtk: 1. cp blib/arch/auto/Gtk/libGtk.dll.a blib/arch/auto/Gtk/libGtkGtk.dll.a 2. add to all created Makefile's `-L../blib/arch/auto/Gtk -lGtkGtk' in `OTHERLDFLAGS'. 3. compile all in a shell with the env setting CYGWIN="check_case:strict" (well add check_case:strict to your usual CYGWIN settings, I use now: CYGWIN="ntsec binmode tty nowinsymlinks check_case:strict" And all this actually works, hurray! Gnome: Hmmpf, not in the Gnome directory, this module also needs `-L../GdkImlib/blib/arch/auto/Gtk/Gdk/ImlibImage -lImlibImage' in addition to `-L../blib/arch/auto/Gtk -lGtkGtk' in `OTHERLDFLAGS'. Others: The following modules are compiled the same way, by adding `-L../blib/arch/auto/Gtk -lGtkGtk' to `OTHERLDFLAGS'. Applet: In the Applet directory there are include paths missing: `-I/opt/gnome/include/orbit-1.0 -I/opt/gnome/include/libcapplet1' I added it at the end of the `INC = ...' line in the Makefile and it compiles ok, well there is also missing: `-lcapplet -lpanel_applet -lpanel_status' from the library list, add them to EXTRALIBS & LDLOADLIBS variable defintion somewhere at the end. Cause: See the top source Makefile.PL: # --modversion capplet is broken The same problem with libGnome vs. libgmnome as before with libGtk vs. libgtk, also make a copy of the perl libGnome.dll.a to libGnomeGnome.dll.a and add this to OTHERLDLIBS: `-L../Gnome/blib/arch/auto/Gnome -lGnomeGnome' GnomePrint: Also a library missing at the linkline -lgnomeprint? Huh, this perl package is really strange... And this modules also needs another module, `-L../GdkPixbuf/blib/arch/auto/Gtk/Gdk/Pixbuf -lPixbuf' At least there are no circular dependencies yet... After compilation finished: * launch X * test Gtk-Perl with `make test' doesn't work for me. I could run the samples in the samples directories though. Applet and Gnomeprint are probably not working as expected, Gnome works partially. HTH, Gerrit -- =^..^= -- 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/