For some reason, the most recent version of Root no longer compiles for me. The error is supposedly a missing libXt library, but that doesn’t make sense since the library is present in the obvious location, and I can compile older versions (eg. 4.00.08, 4.01.01) with no problems. Does anyone know what has changed here?
g++ -D_ALL_SOURCE -D_REENTRANT -D_GNU_SOURCE -fPIC -rdynamic -Wall -Wno-deprecated -D__linux__ -O3 -lXt -lXext -lXp -lX11 -lcrypt -ldl -lnsl ../../obj/XrdXrClientWorker.o ../../obj/XrdXrClient.o ../../obj/XrdXrMain.o -lnsl -lpthread -lrt -ldl -lc -L../../lib -lXrdOuc -lXrdSec -o ../../bin/xrclient
/usr/bin/ld: cannot find -lXt
collect2: ld returned 1 exit status
make: *** [xrootd/src/xrootd/bin/xrootd] Error 2
[morgan@pi root]$ locate libXt
RH8.0, 2.4.20 kernel, gcc 3.2, if it matters.
this happens when compiling what? Which Makefile line specifies the linking of -lXt -lXext etc.? If you really need these libs preceede them with -L/usr/X11R6/lib.
this is the generic Root make, ie.
This same procedure works fine with slightly older versions of Root, so I’m not yet convinced that my machine is as fault. At first glance it appears that the makefile has recently been broken (for my version of Linux, at any rate.)
The line reporting the problem is quoted in my original message – the target seems to be xrclient.
By investigating a bit your problem, it seems to me that it may be due to
to a (usually) undefined and unused variable in a makefile (a likely left over
of some cut-and-paste), which probably gets somehow defined on your
The makefile is
and the variable is LFLAGS, in the rules for target (line 65).
Could you please let me know if dropping such variable solves your problem?
I will propagate the fix in the xrootd main repository.