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 |
|