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 <mk@xxxxxxxxxxxxxxxx> 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 +-- --==---/ / _ \/ // /\ \/ / pcg@xxxxxxxxxxxxx |e| -=====/_/_//_/\_,_/ /_/\_\ XX11-RIPE --+ The choice of a GNU generation | |