[ROOT] rootcint and gcc v3

From: Michael Kuss (kuss@pi.infn.it)
Date: Fri Oct 25 2002 - 19:03:32 MEST


Hi,

GLAST is trying to get it's software ready for gcc v3.  Among the external 
packages used, is ROOT.

I compiled and linked ROOT v3.03.09 with gcc v3.0.2 .  I still hesitate 
to upgrade to RH80/gcc v3.2, it would break a lot of dependencies.

Our simulation package uses root as the output format.  cmt to build 
invokes rootcint, and there I found a strange behaviour:

cd ../digiRootData/ ; export LD_LIBRARY_PATH=/home/users/kuss/scratch/ROOT/lib;/home/users/kuss/scratch/ROOT/bin/rootcint -f ../digiRootData/digiRootData_rootcint.cxx -c -I/data00b/users/kuss/myGlast/packages/Gleam_v2r5_gcc3/mcRootData/v2r8 ../digiRootData/AcdDigi.h ../digiRootData/AcdId.h ../digiRootData/CalDigi.h ../digiRootData/CalXtalId.h ../digiRootData/CalXtalReadout.h ../digiRootData/DigiEvent.h ../digiRootData/GlastAxis.h ../digiRootData/L1T.h ../digiRootData/TkrDigi.h ../digiRootData/TowerId.h ../digiRootData/EventLinkDef.h
Error: class,struct,union or type __traits_type::iterator_category not defined  FILE:prec_stl/iterator LINE:261
Error: class,struct,union or type __traits_type::value_type not defined  FILE:prec_stl/iterator LINE:262
Error: class,struct,union or type __traits_type::difference_type not defined  FILE:prec_stl/iterator LINE:263
Error: class,struct,union or type __traits_type::pointer not defined  FILE:prec_stl/iterator LINE:264
Error: class,struct,union or type __traits_type::reference not defined  FILE:prec_stl/iterator LINE:265
Warning: Error occured during reading source files
Warning: Error occured during dictionary source generation
!!!Removing ../digiRootData/digiRootData_rootcint.cxx ../digiRootData/digiRootData_rootcint.h !!!
Error: /home/users/kuss/scratch/ROOT/bin/rootcint: error loading headers...
gmake[1]: *** [../digiRootData/digiRootData_rootcint.cxx] Error 1
gmake: *** [digiRootDataRootCint] Error 2

Checking, the offending lines are e.g.

    std::vector<UInt_t> m_trackIds;

However, if I embrace them by checking for the following macro (it's 
defined), everything is fine.

#ifdef __SGI_STL_INTERNAL_ITERATOR_H
    std::vector<UInt_t> m_trackIds;
#endif


The compiler itself doesn't care, he compiles both versions.  It's just 
rootcint which doesn't make it without the macro.  Any hint?

Cheers,

Michael



This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:15 MET