Hi folks... Matthias and me are tracking down severe problems with gimp,
gimp-perl and solaris. While Matthias tracked down a problem with libtool
not working when the locale is != C, the situation became more complicated
now.  It seems that the gimp-libraries (e.g. libgimpui) miss lots of
shared library dependencies and/or the rpath. This explains why this can
be fixed by a "use Gtk" in the main perl script, since this forces libgtk
to be linked into perl.

Any ideas?

On Sun, Oct 29, 2000 at 05:56:52PM +0100, Matthias Kurz <[EMAIL PROTECTED]> wrote:
> > I have rebuilt gtk and gimp with LC_ALL=C and LANG=C. Now
> > "ldd libgimpui.so" gives:
> > ldd ./libgimp/.libs/libgimpui.so
> >         libgtk-1.2.so.0 =>       (file not found)
> >         libgdk-1.2.so.0 =>       (file not found)
> >         libgmodule-1.2.so.0 =>   (file not found)
> > 
> > The "file not found" doesn't matter, because it's not installed and
> > LD_LIBRARY_PATH is not set. _What_ matters is, that libgimpui.so
> > now depends on libgtk and so on. This wasn't the case before.
> 
> I hate to say it, but this is still not the complete solution :-(
> The "file not found" messages above _are_ serious problems. They appear
> because neither LD_RUN_PATH was set nor -R... was given when libgimpui
> was linked.
> 
> Now it becomes complicated.
> LD_RUN_PATH was set, when UI.so was built. But it looks like under
> Solaris _this_ search path is only used to locate libraries that UI.so
> depends _directly_ on. It is used to locate libgimpui.so, for example.
> 
> But the dependency on libgtk et all comes from libgimpui.so. So the
> system does not use the search path from UI.so, but the one from
> libgimpui.so. And there was no one given, when libgimpui.so was built.
> 
> So i see 3 possibilities
> 
> 1. You have to add -lgtk -lgdk when UI.so is built. Then UI.so depends
>    _directly_ on the libs and UI.so's library search path is used.
> 2. It's a problem with libtool and libtool should set LD_RUN_PATH or
>    give -R when it builds the library.
> 3. It's a bug in the Solaris runtime linker. It should also use the
>    search paths "above".
> 
> I tend to 2.

O.K. AFAIK solaris ignores LD_RUN_PATH when -R is given. It also seems
highly correct to use libgimpui's rpath, and it also seems that the
problem is only libtool not correctly linking libgimpui, which explains
all this.

> 
> The command line to libtool is:
> /bin/sh ../libtool --mode=link gcc  -g -O2 -Wall -L/usr/local/lib -R/usr/local/p
> kgs/lib:/usr/local/lib -o libgimpui.la -rpath /usr/local/pkgs/gimp-1.1.28/lib -v
> ersion-info 28:0:0      -release 1.1 gimpmenu.lo gimpbrushmenu.lo gimpgradientme
> nu.lo gimppatternmenu.lo gimpchainbutton.lo gimpcolorbutton.lo gimpdialog.lo gim
> pexport.lo gimpfileselection.lo gimphelpui.lo gimppatheditor.lo gimppixmap.lo gi
> mpquerybox.lo gimpsizeentry.lo gimpui.lo gimpunitmenu.lo gimpwidgets.lo -L/usr/l
> ocal/pkgs/gtk+-1.2.8/lib -L/usr/openwin/lib -R/usr/openwin/lib -lgtk -lgdk -L/us
> r/local/pkgs/glib-1.2.8/lib -lgmodule -lglib -ldl -lXext -lX11 -lsocket -lnsl -l
> m 
> 
> Several -R and one -rpath.
> 
> The link line is:
> /usr/ccs/bin/ld -G -h libgimpui-1.1.so.28 -o .libs/libgimpui-1.1.so.28.0.0  gimp
> menu.lo gimpbrushmenu.lo gimpgradientmenu.lo gimppatternmenu.lo gimpchainbutton.
> lo gimpcolorbutton.lo gimpdialog.lo gimpexport.lo gimpfileselection.lo gimphelpu
> i.lo gimppatheditor.lo gimppixmap.lo gimpquerybox.lo gimpsizeentry.lo gimpui.lo 
> gimpunitmenu.lo gimpwidgets.lo  -L/usr/local/lib -L/usr/local/pkgs/gtk+-1.2.8/li
> b -L/usr/openwin/lib -lgtk -lgdk -L/usr/local/pkgs/glib-1.2.8/lib -lgmodule -lgl
> ib -ldl -lXext -lX11 -lsocket -lnsl -lm -lc 
> 
> No (visible) LD_RUN_PATH, no -R.
> 
> What do you think ? Are you still interested in the problem ?

More than ever. I am seeking professional help now ;)

-- 
      -----==-                                             |
      ----==-- _                                           |
      ---==---(_)__  __ ____  __       Marc Lehmann      +--
      --==---/ / _ \/ // /\ \/ /       [EMAIL PROTECTED] |e|
      -=====/_/_//_/\_,_/ /_/\_\       XX11-RIPE         --+
    The choice of a GNU generation                       |
                                                         |

Reply via email to