This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: guile-gtk?


"Peter C. Norton" <spacey@inch.com> writes:

> [spacey@uptime logs]$ guile-gtk
> ERROR: In procedure gsubr-apply in expression (scm-error (quote misc-error) #f ...):
> ERROR: can't open library "libguilegtk"
> 
> but ldd seems to be hapily able to locate libguilegtk.so.0, which I think
> means that ld.so should be able to. 

Hmm, sorry, I'm out of clues about this one.

The "ERROR:" you are seeing comes from Guile and not from ld.so.  So
you probably have a problem with guile-gtk trying to dlopen
libguilegtk and then failing.  But I have no idea why it tries to do
that, and why it fails.

You might want to trace thru `merge-compiled-code' in gtk/dynlink.scm.
It should find the init functions via the `module names' 

    (gtk %static-initfuncs% sgtk_init_gtk_gtk_glue)

and 

    (gtk %static-initfuncs% sgtk_init_gtk_gdk_glue)

It should then proceed to just call this functions with dynamic-call,
without any shared library.

The error message above indicates that the fake module names are not
present in the internal Guile table.  This might be due to a corrupted
main.c of guile-gtk.  It should look like this (note the IMPORTANT
part):

    /* Generated by build-guile-gtk.  Do not edit. */

    #include <libguile.h>
    #include <guile-gtk.h>

    void sgtk_init_gtk_gtk_glue ();
    void sgtk_init_gtk_gdk_glue ();

    static void
    inner_main (void *closure, int argc, char **argv)
    {
      SGTK_REGISTER_GLUE (sgtk_init_gtk_gtk_glue);   <---- IMPORTANT
      SGTK_REGISTER_GLUE (sgtk_init_gtk_gdk_glue);   <---- IMPORTANT
      sgtk_shell (argc, argv);
    }

    int
    main (int argc, char **argv)
    {
      scm_boot_guile (argc, argv, inner_main, 0);
      return 0; /* never reached */
    }

hth...tschi,
 Marius