From: Rick K. <rk...@nc...> - 2007-01-18 00:50:38
|
Steve, Coincidentally, another user reported this to the perfsuite-users mailing list on SourceForge, so I will answer and hopefully move towards solving two problems at once... This error is similar to one that has occurred on IA-64 machines where 32-bit libraries are mixed with 64-bit. It comes into play when the BFD extension that is used by psprocess is being built (libbfd.a). I had difficulty resolving this on an x86-64 machine as well, and as I recall the solution I ended up using was to avoid attempting to build that particular extension for PerfSuite. This is done by adding --disable-binutils to the configure command line, and rebuilding the package. It wouldn't hurt to do "make distclean" first, to get everything back to its original state. There should be no loss of functionality when configured with --disable-binutils, but what will happen is that PC->source line mapping will be done by an external "addr2line" process rather than purely through psprocess/Tcl. It may also help to explicitly request the "bitness" of the build, which I believe is done through the gcc option "-m32" or "-m64", depending on which you want. This is also done at configure time, through the CFLAGS variable, e.g.: ./configure [options] CFLAGS="-m32 <others>" Rick On Wed, 17 Jan 2007, Steven R Brandt wrote: > I'm having some trouble getting perfsuite to build on an x86_64 machine. I > get the following error: > > gcc -shared .libs/libpsbfd_la-Bfd_control.o .libs/libpsbfd_la-Bfd_init.o > .libs/libpsbfd_la-Bfd_inquire.o .libs/libpsbfd_la-Bfd_lookup.o -lbfd > -liberty -Wl,-soname -Wl,libpsbfd.so.1 -o .libs/libpsbfd.so.1.0.0 > /usr/bin/ld: > /usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64/libbfd.a(bfd.o): > relocation R_X86_64_32 against `a local symbol' can not be used when making a > shared object; recompile with -fPIC > /usr/lib/gcc/x86_64-redhat-linux/3.4.6/../../../../lib64/libbfd.a: could not > read symbols: Bad value > > My config: > export PATH="/home/packages/ActiveTcl-8.4/bin:$PATH" > ./configure \ > --with-wish=/home/packages/ActiveTcl-8.4/bin/wish \ > --with-tclinclude=/home/packages/ActiveTcl-8.4/include \ > --with-tdom=/home/packages/ActiveTcl-8.4/lib/tdom0.8.1/ \ > --with-papi=/home/packages/papi-3.5.0 \ > -prefix=/home/packages/perfsuite-0.6.2a6 > > $ uname -a > Linux celeritas.cct.lsu.edu 2.6.9-prep #1 SMP Thu Dec 7 20:32:47 CST 2006 > x86_64 x86_64 x86_64 GNU/Linux > > I tried to get around this by configuring with --disable-shared. > Unfortunately, while this compiles, it does not work. I get this error when I > attempt to run: > > $ psrun ls > ERROR: ld.so: object 'libpsrun.so.0' from LD_PRELOAD cannot be preloaded: > ignored. > > $ find /home/packages/perfsuite-0.6.2a6/ -name libpsrun.\* > /home/packages/perfsuite-0.6.2a6/lib/libpsrun.la > /home/packages/perfsuite-0.6.2a6/lib/libpsrun.a > > Any ideas? > > Thanks, > Steve > |