Hi,
Alexander Mann wrote on 07/28/2010 05:33 PM:
> indeed, using the wrong g++ version caused this. Changing
>
> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686-slc5-gcc43-opt/setup.sh
>
> to
>
> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/x86_64-slc5-gcc43-opt/setup.sh
>
> fixes this issue.
But then you use the 64bit version of the compiler, which generates libraries incompatible with a 32bit root. You claimed to use a 32bit root, so this cannot solve your problem. Instead either use your local g++ (check that it works) or use GCC43 (i686-slc5) from AFS. If you cannot build any binaries with either then your OS's toolchain (gcc, binutils as ld) is not installed correctly.
Cheers, Axel.
> BUT instead I get another problem: In the end I want to use PyROOT, and
> when I source the x86_64 version I get an error in python when importing
> the ROOT module:
This might be a consequence of setting up the wrong version (64 instead of 32 bit) of GCC.
Cheers, Axel.
> Python 2.5.4 (r254:67916, Oct 8 2009, 11:42:02)
> [GCC 4.3.2] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
>>>> import ROOT
>> Hi Alexander, >> >> this looks like a broken installation of your toolchain. Can you try to >> compile any C++ program with -m32 using your g++? >> >> Cheers, Axel. >> >> Alexander Mann wrote on 07/28/2010 02:15 PM: >>> >>> Hi Axel, >>> >>> I will send the full debug output to you in another mail in order not to >>> spam the mailing list. >>> >>> You are right that indeed the -m32 option is used there. Maybe it's just >>> the other way round, i.e. -m64 needs to be used here? >>> >>> . >>> . >>> . >>> Info in<ACLiC>: cd "/net/ph2/auto/home/mann/Code/PyROOT/." ; g++ -c -O2 >>> -pipe -m32 -Wall -W -Woverloaded-virtual -fPIC -pthread >>> -I$ROOTSYS/include >>> -I"/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/include" >>> >>> -I"/net/ph2/auto/home/mann/Code/PyROOT/." >>> -I"/net/ph2/auto/home/mann/Code/PyROOT" >>> "/net/ph2/auto/home/mann/Code/PyROOT/./Loader_C_ACLiC_dict.cxx" ; g++ >>> "/net/ph2/auto/home/mann/Code/PyROOT/./Loader_C_ACLiC_dict.o" -shared >>> -Wl,-soname,Loader_C.so -m32 -O2 >>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libCint.so >>> >>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libCore.so >>> >>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libRint.so >>> >>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libMathCore.so >>> >>> -o "/net/ph2/auto/home/mann/Code/PyROOT/./Loader_C.so" >>> {standard input}: Assembler messages: >>> . >>> . >>> . >>> >>> cu, >>> Alexander >>> >>> >>> >>> >>> >>> Am 28.07.2010 13:19, schrieb Axel Naumann: >>>> Hi Alexander, >>>> >>>> Looking at >>>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/include/compiledata.h >>>> >>>> >>>> I see that -m32 is passed in all compiler invocations - I don't see how >>>> it could fail. Can you run >>>> >>>> root [0] gDebug=7 >>>> root [1] .L Loader.C+ >>>> >>>> and send the output? (I'll be a few pages...) >>>> >>>> Cheers, Axel. >>>> >>>> Alexander Mann wrote on 07/28/2010 01:05 PM: >>>>> >>>>> Hi Bertrand, >>>>> >>>>> good idea, but it did not help :( >>>>> >>>>> What I am doing is this: >>>>> >>>>> # setting up 32 bit ROOT 5.26.00b >>>>> source >>>>> /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686-slc5-gcc43-opt/setup.sh >>>>> export >>>>> ROOTSYS=/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root >>>>> >>>>> >>>>> >>>>> export >>>>> PATH=/afs/cern.ch/sw/lcg/external/Python/2.5.4p2/i686-slc5-gcc43-opt/bin:$ROOTSYS/bin:$PATH >>>>> >>>>> >>>>> >>>>> export >>>>> LD_LIBRARY_PATH=$ROOTSYS/lib:/afs/cern.ch/sw/lcg/external/Python/2.5.4p2/i686-slc5-gcc43-opt/lib:$LD_LIBRARY_PATH >>>>> >>>>> >>>>> >>>>> export PYTHONPATH=$PYTHONPATH:$ROOTSYS/lib >>>>> >>>>> >>>>> In ROOT: >>>>> >>>>> .L Loader.C+ >>>>> >>>>> >>>>> This is the contents of the file Loader.C: >>>>> >>>>> #include<vector> >>>>> #ifdef __CINT__ >>>>> #pragma link C++ class vector<vector<float> >; >>>>> #pragma link C++ class vector<vector<int> >; >>>>> #pragma link C++ class pair<string,string>; >>>>> #else >>>>> template class std::vector<std::vector<float> >; >>>>> template class std::vector<std::vector<int> >; >>>>> #endif >>>>> >>>>> >>>>> Gives these error messages: >>>>> >>>>> root [0] .L Loader.C+ >>>>> Info in<TUnixSystem::ACLiC>: creating shared library >>>>> /net/ph2/auto/home/mann/Code/PyROOT/./Loader_C.so >>>>> {standard input}: Assembler messages: >>>>> {standard input}:11: Error: suffix or operands invalid for `push' >>>>> {standard input}:16: Error: relocated field and relocation type differ >>>>> in signedness >>>>> {standard input}:19: Error: suffix or operands invalid for `pop' >>>>> . >>>>> . >>>>> . >>>>> {standard input}:26058: Error: relocated field and relocation type >>>>> differ in signedness >>>>> {standard input}:26077: Error: relocated field and relocation type >>>>> differ in signedness >>>>> {standard input}:26096: Error: relocated field and relocation type >>>>> differ in signedness >>>>> g++: /net/ph2/auto/home/mann/Code/PyROOT/./Loader_C_ACLiC_dict.o: No >>>>> such file or directory >>>>> Error in<ACLiC>: Compilation failed! >>>>> >>>>> cu, >>>>> Alexander >>>>> >>>>> >>>>> >>>>> Am 28.07.2010 12:56, schrieb Bertrand Bellenot: >>>>>> Hi Alexander, >>>>>> >>>>>> Maybe you could try to setup the compiler: >>>>>> >>>>>> From bash: >>>>>> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686/setup.sh >>>>>> >>>>>> From tcshell: >>>>>> source /afs/cern.ch/sw/lcg/contrib/gcc/4.3/i686/setup.csh >>>>>> >>>>>> Cheers, Bertrand. >>>>>> >>>>>> -----Original Message----- >>>>>> From: owner-roottalk_at_root.cern.ch >>>>>> [mailto:owner-roottalk_at_root.cern.ch] >>>>>> On Behalf Of Alexander Mann >>>>>> Sent: Wednesday, July 28, 2010 12:47 >>>>>> To: roottalk_at_root.cern.ch >>>>>> Subject: [ROOT] .L xyz.C+ with 32bit ROOT version on 64bit machine >>>>>> >>>>>> >>>>>> Hi, >>>>>> >>>>>> I have a complicated problem. I need to use the 32 bit version of >>>>>> ROOT >>>>>> on a 64 bit machine. This seems to cause trouble when I try to >>>>>> compile >>>>>> macros in CINT with .L xyz.C+, I get lots of assembler errors, >>>>>> probably >>>>>> related to the 32/64 bit issue: >>>>>> >>>>>> {standard input}: Assembler messages: >>>>>> {standard input}:11: Error: suffix or operands invalid for `push' >>>>>> {standard input}:16: Error: relocated field and relocation type >>>>>> differ >>>>>> in signedness >>>>>> ... >>>>>> >>>>>> Is there a way to pass a switch to the assembler that fixes this? >>>>>> >>>>>> I am using this root: >>>>>> /afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/ >>>>>> >>>>>> >>>>>> bin/root >>>>>> >>>>>> on such a machine: >>>>>> Linux 2.6.18-194.8.1.el5 #1 SMP Thu Jul 1 19:04:48 EDT 2010 x86_64 >>>>>> x86_64 x86_64 GNU/Linux >>>>>> >>>>>> Any help is much appreciated! >>>>>> >>>>>> cu, >>>>>> Alexander >>>>>> >>>>> >>>>> >>> >>>
This archive was generated by hypermail 2.2.0 : Wed Jul 28 2010 - 23:50:02 CEST