Peculiar configure behavior

Randy Chung aoshi at OCF.Berkeley.EDU
Sat Aug 7 18:21:04 CEST 2004


First, a disclaimer: my familiarity with the autoconf chaintool is near nil.

Now then, I'll first show an example of how things are wrong.  A few 
choice snippets from the autogenerated Makefile in xfce-utils/xfrun, 
where the environment variables during the build process were as follows:

PKG_CONFIG_PATH=/usr/local/xfce4/lib/pkgconfig
LDFLAGS="-L/usr/local/xfce4/lib -R/usr/local/xfce4/lib"

But, curiously, here are the two important lines from the autogenerated 
Makefile:

LDFLAGS = -L/usr/local/xfce4/lib -R/usr/local/xfce4/lib

xfrun4_LDADD = \
   -Wl,--export-dynamic -L/usr/X11R6/lib -L/usr/local/xfce4/lib 
-lxfcegui4 -lgtk-x11-2.0 -lxfce4util -lgdk-x11-2.0 -latk-1.0 
-lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 
-lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0              \
   -Wl,-R/usr/lib -ldbh -lm

What we can see from line 1 is that LDFLAGS is being read properly. 
Excellent.

What we can see from line two, particularly the part that reads 
"-R/usr/lib" is that the -R flag passed in LDFLAGS is not being 
respected.  However, the -L flag (what libraries to use during 
compilation) IS respected ("-L/usr/local/xfce4/lib" in line 2).  This 
lets xfrun build without a hitch, and for all we can tell life is good. 
  But upon trying to run it, the -R flag (what libraries to use when 
actually running the binary) kicks in, and reads the version in /usr/lib 
and dies a horrible, painful death akin to Braveheart (but worse, 
because there's no fast forward button).

To fix, simple swap -R/usr/lib for -R/usr/local/xfce4/lib (in the 
Makefile) and everything compiles and runs happily.  So the question is, 
why is (some autoconf tool) not respecting the -R portion of the LDFLAGS 
environment variable?

Once we can answer that question, all will unfold and life will be 
peachy again.  Alternatively, we could simply require all users to 
change the autogen'ed Makefiles by hand :) (or only use CVS)

Again, more time will be commited to this once I get on my plane. 
Little by little, it seems edscott and I are making progress on this, so 
hopefully there'll be a fix soon!

--

Randy


edscott wrote:
> When all else fails, read the instructions:
> 
> "If you ever happen to want to link against installed libraries
> in a given directory, LIBDIR, you must either use libtool, and
> specify the full pathname of the library, or [don't use libtool]"
> 
> The automated make process uses libtool, so if we follow instructions,
> do some cut and paste and replace -lxfcegui4 with
> -l${prefix}/lib/libxfcegui4.so, everything is marvelous:
> 
> /bin/sh ../libtool --mode=link gcc  -g -O2   -o xfrun4  xfrun4-xfrun.o
> -Wl,-R/var/xfce/lib -L/var/xfce/lib -lxfce4util -lglib-2.0
> -Wl,-R/var/xfce/lib -Wl,--export-dynamic -L/usr/X11R6/lib
> -L/var/xfce/lib -Wl,--rpath -Wl,/var/xfce/lib
> /var/xfce/lib/libxfcegui4.so -lgtk-x11-2.0  -lgdk-x11-2.0 -latk-1.0
> -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0
> -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0 -Wl,-R/usr/lib -ldbh -lm  
> 
> which produces --> 
>  
> gcc -g -O2 -o xfrun4 xfrun4-xfrun.o -Wl,-R/var/xfce/lib
> -Wl,-R/var/xfce/lib -Wl,--export-dynamic -Wl,--rpath -Wl,/var/xfce/lib
> /var/xfce/lib/libxfcegui4.so -Wl,-R/usr/lib  -L/var/xfce/lib
> /var/xfce/lib/libxfce4util.so -L/usr/X11R6/lib
> /usr/lib/libgtk-x11-2.0.so /usr/lib/libgdk-x11-2.0.so
> /usr/lib/libatk-1.0.so /usr/lib/libgdk_pixbuf-2.0.so
> /usr/lib/libpangoxft-1.0.so /usr/lib/libpangox-1.0.so
> /usr/lib/libpango-1.0.so /usr/lib/libgobject-2.0.so
> /usr/lib/libgmodule-2.0.so -ldl /usr/lib/libglib-2.0.so
> /usr/lib/libdbh.so -lm -Wl,--rpath -Wl,/var/xfce/lib -Wl,--rpath
> -Wl,/var/xfce/lib
> 
> So unless I am mistaken, there is no fix possible (Benny knows more
> about this than I do), except updating libxfce4util to the latest
> version. 
> 
> Why does this only happen to xfcalendar, xfrun4 and xffm? That's a good
> question to ask libtool.
> 
> regards,
> 
> Edscott  
> 



More information about the Xfce4-dev mailing list