Re: .L xyz.C+ with 32bit ROOT version on 64bit machine

From: Alexander Mann <amann_at_uni-goettingen.de>
Date: Wed, 28 Jul 2010 17:33:15 +0200

Hi Axel,

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 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:

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
Traceback (most recent call last):

   File "<stdin>", line 1, in <module>
   File
"/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/ROOT.py", line 86, in <module>

     import libPyROOT as _root
ImportError: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by
/afs/cern.ch/sw/lcg/app/releases/ROOT/5.26.00b/i686-slc5-gcc43-opt/root/lib/libPyROOT.so)

Do you know how to solve both problems? Maybe it's not possible in principle.

cu,
Alexander

Am 28.07.2010 17:09, schrieb Axel Naumann:
> 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
>>>>>
>>>>
>>>>
>>
>>
Received on Wed Jul 28 2010 - 17:33:17 CEST

This archive was generated by hypermail 2.2.0 : Wed Jul 28 2010 - 23:50:02 CEST