# problème dans une librairie dynamique *.so sous linux



## pheapc (13 Mai 2013)

bonjour
je m'excuse si ma question vous dérange
je travaille sur un code développer en c++ qui bien marché sur mac os ,ce code va permettre de crée des librairies *.so à partir des *.cc et *.h j'ai utilisé pour cela comme flags:
	
	



```
CXXFLAGS = -g -O2 -fPIC -Wall -ldl -D_GNU_SOURCE ,CXX := g++ et   $(CXX)-shared -o $(LIBNAME)   $(CLIBLIB) $(OUT_OBJS)
```
 cette étape est bien passé j'ai obtenu les *.so comme suit :

```
morad@linux-nzlc:~/Musique/workdir> ls library/tklibs/lib/
libAnalyticalJacobians.so  libDetGeometry.so        libGeomPropagators.so     libPatternTestTools.so  libSmearingClusterizers.so  libTkLayout.so
libBaseMagneticField.so    libDetLayout.so          libKalmanUpdators.so      libPatternTools.so      libStatUtilities.so         libTkNavigation.so
libBasicDet.so             libDetUtilities.so       libMaterialEffects.so     libPropagators.so       libSurfaceGeometry.so       libTrackFitters.so
libBasicStripDet.so        libDetVolumeGeometry.so  libNumericalJacobians.so  libRKPropagators.so     libTkCommonDet.so           libTrajectoryParametrization.so
libCommonStripDet.so       libGenUtil.so            libPatternPrimitives.so   libSiPixelDet.so        libTkFastSimHit.so          libUI.so
morad@linux-nzlc:~/Musique/workdir> ./libScript.py
```
ensuite la deuxième étape je voudrais crée l&#8217;exécutable pour cela j'ai spécifie les -I,-L et -l dans le makefile j'ai comme une flags :
	
	



```
CXX = g++ et $(CXX) -O2 -g -fopenmp  $(CILIBLAY)  $(OUT_OBJS)  $(OBJDIR)/$(MAIN_PROG).o -o $(MAIN_PROG).exe
```
mais avec ça après l&#8217;exécution j'obtiens une erreur :
***************************************


```
morad@linux-nzlc:~/Musique/workdir/layout/analyze> make mainP=runAnalyze
Makefile:85: /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d: Aucun fichier ou dossier de ce type
g++  -MM  -I/cern/CLHEP/2.0.4.5/include/ -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs  -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2  -I/cern/Minuit2/5.28.00/include -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/          myAnalyze.cc > /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d.$$; \
sed 's,\(myAnalyze\)\.o[ :]*,\1.o /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d : ,g' < /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d.$$ > /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d; \
rm -f /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d.$$
g++  -c  -I/cern/CLHEP/2.0.4.5/include/ -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs  -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2  -I/cern/Minuit2/5.28.00/include -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/          myAnalyze.cc -o /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.o  
g++  -c  -I/cern/CLHEP/2.0.4.5/include/ -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs  -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2  -I/cern/Minuit2/5.28.00/include -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/         runAnalyze.cxx -o /home/morad/Musique/workdir/layout/build/analyze/runAnalyze.o
g++  -O2 -g -fopenmp  -L/home/morad/Musique/workdir/library/tklibs/lib -L/home/morad/Musique/workdir/layout/lib  -lxmlgeom -ltrack -lcross -lMaterialEffects -lPropagators -ltracking -lgeom -lStatUtilities -lAnalyticalJacobians -ltkhist -lxmltkgeom -lutils -lopt -ldraw -lanalyze  -L/usr/lib  -lGeomPropagators -lPatternPrimitives -lSurfaceGeometry -lBaseMagneticField -lUI -lGenUtil -lSiPixelDet -lSmearingClusterizers -lBasicDet -lTrackFitters -lTkFastSimHit -lCommonStripDet -lDetLayout -lTkLayout -lDetGeometry -lKalmanUpdators -lTkCommonDet -lPatternTools -lTrajectoryParametrization -lBasicStripDet -lDetUtilities -lDetVolumeGeometry -lPatternTestTools -lRKPropagators -lTkNavigation -lNumericalJacobians  -lxml++-2.6 -lxml2 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0  -L/cern/ROOT/source/root/lib -L/cern/Minuit2/5.28.00/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lfreetype -lz /usr/lib/libbz2.so.1.0.6  -lpthread  -lm -ldl -lMinuit2  -L/cern/CLHEP/2.0.4.5/lib/ -lCLHEP-2.0.4.5  /usr/lib/libstdc++.so.6  /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.o  /home/morad/Musique/workdir/layout/build/analyze/runAnalyze.o -o runAnalyze.exe
/home/morad/Musique/workdir/library/tklibs/lib/libSmearingClusterizers.so: undefined reference to `TrivialROUSetter::set(Module)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FixTIDTopology::recreateTopologies()'
/home/morad/Musique/workdir/library/tklibs/lib/libSmearingClusterizers.so: undefined reference to `TkDetTypeName::shortName(DetType const&)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `DetUnitGluer::glue(__gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >, __gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >, __gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >, __gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkFastSimHit.so: undefined reference to `RawHepEventFactoryFromGun::RawHepEventFactoryFromGun()'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `toa::operator()(int const&) const'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FixTIDTopology::FixTIDTopology()'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `DetBlade::DetBlade(__gnu_cxx::__normal_iterator<Det* const*, std::vector<Det*, std::allocator<Det*> > >, __gnu_cxx::__normal_iterator<Det* const*, std::vector<Det*, std::allocator<Det*> > >)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `toa::~toa()'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FullTracker::instance()'
collect2: erreur: ld a retourné 1 code d'état d'exécution
make: *** [runAnalyze] Erreur 1
morad@linux-nzlc:~/Musique/workdir/layout/analyze> [/COLOR]
```
*****************************************
ce qui non défini dans *.so par exemple TrivialROUSetter est seulement déclaré dans un fichier .h il est n'est pas défini dans .cc j'ai l'intuition que le compilateur g++ pour l'opensuse a besoin d'une flags pour n'est chercher les définitions des includes *.h que s'il est necessaire contrairement au g++ pour mac-os
merci d'avance


----------



## bompi (14 Mai 2013)

Très franchement, ton post était quasi illisible. Pour les sorties de compilations et le code, je te conseillerais d'utiliser les balises [code] [/code], ça permettrait d'y voir plus clair. Ne le prends pas mal mais un petit effort dans l'orthographe serait bienvenu aussi.

J'édite donc ton message avec des balises pour le rendre un peu plus lisible.

À part ça, je verrais d'emblée trois pistes à explorer :


il te manque une bibliothèque au moment de l'édition de liens ;
tu utilises les _headers_ d'une bibliothèque mais tu crées l'exécutable avec une autre version ;
tu utilises une bibliothèque compilée avec d'autres options qui font que des méthodes sont absentes.


----------



## pheapc (14 Mai 2013)

merci de votre attention et de ta réponse ,j'ai vraiment un problème au niveau de langage mais je suis entraine  d'ensienger pour éviter ce problème  
j'ai l'intuition qu'il manque une bibliothèque propre au opensuse mais je connais pas  , je poste mon makfile 
	
	



```
# this Makefile compiles all the *.cc files in the current directory
# It generates the dependencies automatically, following the example at
# info:/make/Automatic Prerequisites
# names of cc files without suffixe
# -------------
# The Prerequisites and object files will be writen in objfiles
#---------------


OBJDIR := /home/morad/Musique/workdir/layout/build/analyze
sources := $(wildcard *.cc)

BASENAMES_FILES = $(basename $(sources)) 
objfiles = $(addsuffix .d,$(BASENAMES_FILES))
OUT_OBJS = $(addprefix $(OBJDIR)/,$(objfiles))
# include and libs paths paths 
CLHEPDIR_INC  := -I/cern/CLHEP/2.0.4.5/include/

CLHEPDIR_LIB  := -L/cern/CLHEP/2.0.4.5/lib/

CLHEPDIR_LIBS := -lCLHEP-2.0.4.5

LOCALINC      := -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs 

ALPINEDIR_INC := -I/home/morad/Musique/workdir/library/tklibs

ALPINEDIR_LIB := -L/home/morad/Musique/workdir/library/tklibs/lib -L/home/morad/Musique/workdir/layout/lib  -lxmlgeom -ltrack -lcross -lMaterialEffects -lPropagators -ltracking -lgeom -lStatUtilities -lAnalyticalJacobians -ltkhist -lxmltkgeom -lutils -lopt -ldraw -lanalyze

ALPINEDIR_LIBS:= -lTkLayout -lDetGeometry -lKalmanUpdators  -lDetVolumeGeometry -lPatternTestTools -lRKPropagators -lTkCommonDet -lPatternTools -lTrajectoryParametrization -lBasicStripDet -lDetUtilities -lBasicDet -lGeomPropagators -lPatternPrimitives -lSurfaceGeometry -lBaseMagneticField -lUI -lGenUtil -lSiPixelDet -lSmearingClusterizers -lTrackFitters -lTkFastSimHit -lCommonStripDet -lDetLayout  -lTkNavigation -lNumericalJacobians 

ROOTDIR_INC   := -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2 

ROOTDIR_LIB   := -L/cern/ROOT/source/root/lib  /usr/lib/libX11.so

ROOTDIR_LIBS  := -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix\
		 -lPhysics -lMathCore -lThread -lfreetype -lz  /usr/lib/libbz2.so.1.0.6  -pthread -Wl,-rpath,/cern/ROOT/source/root/lib -lpthread  -lm -ldl

XMLDIR_INC    := -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/    
XMLDIR_LIB    := -L/usr/lib

XMLDIR_LIBS   := -lxml++-2.6 -lxml2 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0  /usr/lib/preloadable_libintl.so

MINUITDIR_INC := -I/cern/Minuit2/5.28.00/include
MINUITDIR_LIB := -L/cern/Minuit2/5.28.00/lib
MINUITDIR_LIBS := -lMinuit2 
#CPPPATH := 
CILIBLAY = $(ALPINEDIR_LIB)  $(XMLDIR_LIB)  $(ALPINEDIR_LIBS) $(XMLDIR_LIBS) $(ROOTDIR_LIB) $(MINUITDIR_LIB) $(ROOTDIR_LIBS) $(MINUITDIR_LIBS) $(CLHEPDIR_LIB) $(CLHEPDIR_LIBS)  /usr/lib/libstdc++.so.6 /lib/libutil-2.15.so /lib/libSegFault.so
CINCLAY =  $(CLHEPDIR_INC) $(LOCALINC) $(ROOTDIR_INC) $(MINUITDIR_INC) $(XMLDIR_INC)    

MAIN_PROG = $(mainP)

#CXXFLAGS = -g -O2 -fPIC -Wall -D_GNU_SOURCE 

CXXFLAGS =-m32 
#-m32 -fPIC -Wall -D_GNU_SOURCE
CXX = g++ 
#-D_GNU_SOURCE 
all: $(MAIN_PROG)
$(OBJDIR)/%.d: %.cc
	$(CXX) -MM $(CXXFLAGS) $(CINCLAY)  $< > $@.$$$$; \
	sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
	rm -f $@.$$$$

objfiles := $(addsuffix .o,$(BASENAMES_FILES))
OUT_OBJS := $(addprefix $(OBJDIR)/,$(objfiles))

#all: $(MAIN_PROG)

$(OBJDIR)/$(MAIN_PROG).o : $(MAIN_PROG).cxx
	$(CXX) -c -g $(CXXFLAGS) $(CINCLAY) $< -o $@

$(MAIN_PROG) : $(OUT_OBJS) $(OBJDIR)/$(MAIN_PROG).o
#	@echo "---- " $(CILIBLAY)
	$(CXX) -fopenmp  $(CILIBLAY)  $(OUT_OBJS)  $(OBJDIR)/$(MAIN_PROG).o -o $(MAIN_PROG)
#-undefined dynamic_lookup
$(OBJDIR)/%.o : %.cc 
	$(CXX) -c -g $(CXXFLAGS) $(CINCLAY)  $< -o $@  

include $(sources:%.cc=$(OBJDIR)/%.d)

clean :
	rm $(OBJDIR)/*.d $(OBJDIR)/*.o $(LIBNAME)
```
 je vous invite à consulter http://www.cplusplus.com/forum/unices/101797/ pour m'aider de trouver une réponse de ce complexe problème
 merci de vos patiences


----------



## bompi (14 Mai 2013)

En cherchant deux objets manquants (TrivialROUSetter et FixTIDTopology), je vois qu'ils appartiennent à quelque chose s'appelant ORCA (_cf._ ici).


----------



## pheapc (14 Mai 2013)

oui parce que je travaille sur un code qui permet de simuler le passage d'une particule dans une "inner detector", le code est développé en collaboration . ce qui non défini dans *.so par exemple TrivialROUSetter est seulement déclaré dans un fichier .h il est n'est pas défini dans .cc j'ai l'intuition que le compilateur g++ pour l'opensuse a besoin d'une flags pour n'est chercher les définitions des includes *.h que s'il est necessaire contrairement au g++ pour mac-os


----------



## bompi (14 Mai 2013)

Ce n'est pas parce qu'on utilise un _header_ où est défini une méthode qu'on a besoin de lié la bibliothèque contenant ladite méthode.
On en a besoin si :
- on utilise dans son programme cette méthode
- on lie une bibliothèque qui a besoin de la bibliothèque manquante

Il faudrait déjà s'assurer de ça.

Par ailleurs, tu peux aussi t'intéresser à installer ces fameuses bibliothèques et mettre à jour le Makefile pour les lier.


----------



## pheapc (14 Mai 2013)

en s'interéssant à resoudre le problème lie a *FixTIDTopology* ,pou ça on va chercher où se trouve se fichier 
	
	



```
morad@linux-nzlc:~/Musique/workdir> ./myfind . *.h FixTIDTopology
. *.h FixTIDTopology
chercher FixTIDTopology dans les fichiers *.h se trouvant dans .
./library/tklibs/Tracker/TkLayout/interface/TopologyBuilderFromXML.h:  void FixTIDTopologyAndPutInConstructMode();
./library/tklibs/Tracker/TkLayout/interface/TopologyBuilder.h:  void FixTIDTopologyAndPutInConstructMode();
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:#ifndef FixTIDTopology_H
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:#define FixTIDTopology_H
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:class FixTIDTopology {
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:  FixTIDTopology();
./library/tklibs/Tracker/TkLayout/interface/PartialRedigitizeTID.h: * Patch for the bug explained in FixTIDTopology. To be called in the event loop, 
morad@linux-nzlc:~/Musique/workdir> ./myfind . *.cc FixTIDTopology
. *.cc FixTIDTopology
chercher FixTIDTopology dans les fichiers *.cc se trouvant dans .
./library/tklibs/Tracker/TkLayout/src/PartialRedigitizeTID.cc:#include "Tracker/TkLayout/interface/FixTIDTopology.h"
./library/tklibs/Tracker/TkLayout/src/PartialRedigitizeTID.cc:  FixTIDTopology myFixTIDTopology;
./library/tklibs/Tracker/TkLayout/src/PartialRedigitizeTID.cc:  myFixTIDTopology.recreateTopologies();
grep: ./layout/analyze/.#temp.cc: Aucun fichier ou dossier de ce type
morad@linux-nzlc:~/Musique/workdir> cd library/tklibs/Tracker/TkLayout/interface
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/interface> ls
CmsTrackerBuilder.h            GluedDetUnits.h                  StereoRodDetUnits.h                                TkDumpDetTypes.h            TkRingedTOBLayerBuilder.h
CmsTrackerDetUnits.h           HipApvKillerPerDetType.h         StripDigiROUDividerWithCabling.h                   TkDumpDigiROUDetectors.h    TkROUFactory.h
CmsTrackerFromDetUnits.h       IsBarrelDetUnit.h                TBNumberingFactory.h                               TkDumpPositionsAndAxes.h    TkSequentialMduleNumberingScheme.h
CmsTracker.h                   IsModuleDetUnit.h                TBTracker.h                                        TkDumpPositions.h           TOBDetUnits.h
DetLayerBuilder.h              LayerAccessor.h                  TkAllRingsDetLayerFactory.h                        TkDumpRecoGeom.h            TopologyBuilderFromXML.h
DetUnitComposite.h             MonoRodDetUnits.h                TkBarrelLayerBuilder.h                             TkDumpTopologies.h          TopologyBuilder.h
DetUnitCompositeLeaf.h         NavigationPrinter.h              TkDDDSimHitNumberingSchemaFromCmsimGeometry.h      TkForwardLayerBuilder.h     Tracker.h
DetUnitDigiROUDivider.h        PartialRedigitize.h              TkDDDSimHitNumberingSchemaFromCmsimGeometryLess.h  TkGlobalDetUnitToDDDMap.h   TransientClearingROU.h
DetUnitDigiROUDivider.h~       PartialRedigitizeTID.h           TkDDDSimHitNumberingScheme.h                       TkLayerName.h               TransientROU.h
DetUnitDigiROUDividerSimple.h  RingedBarrelPixelLayerBuilder.h  TkDetLayerFactoryForNumbering.h                    TkNumberingSchemeFactory.h  TransientROU_XML.h
DetUnitROUDivider.h            RodDetUnits.h                    TkDetLayerFactory.h                                TkRingedTECLayerBuilder.h   TurbineForwardPixelLayerBuilder.h
[B][U]FixTIDTopology.h[/U][/B]               RodLayerDetUnits.h               TkDetTypeByName.h                                  TkRingedTIBLayerBuilder.h
FullTracker.h                  SimplePhiTkROUFactory.h          TkDetTypeName.h                                    TkRingedTIDLayerBuilder.h
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/interface> ls ../src/
BarrelLayerPartitioner.cc      DetUnitDigiROUDivider.cc        LayerAccessor.cc                                    TkDDDSimHitNumberingScheme.cc.not   TkRingedTECLayerBuilder.cc.not
BarrelLayerPartitioner.h       DetUnitDigiROUDividerSimple.cc  NavigationPrinter.cc                                TkDetLayerFactory.cc.not            TkRingedTIBLayerBuilder.cc.not
BladeFinder.cc                 DetUnitGluer.cc.not             PartialRedigitize.cc                                #TkDetLayerFactoryForNumbering.cc#  TkRingedTIDLayerBuilder.cc.not
BladeFinder.h                  DetUnitGluer.h                  PartialRedigitizeTID.cc                             TkDetLayerFactoryForNumbering.cc    TkRingedTOBLayerBuilder.cc.not
BladeLessPhi.h                 DetUnitNumbering_TrackerTag.cc  PartialRedigitizeTID.cc~                            TkDetLayerFactoryForNumbering.cc~   TkSequentialMduleNumberingScheme.cc.not
BladeLocator.h                 DetUnitROUDivider.cc            PeriodicBladeLocator.cc                             TkDetTypeByName.cc                  TopologyBuilder.cc.not
BladeStructCloseTo.h           [B][U]FixTIDTopology.cc.not [/U][/B]          PeriodicBladeLocator.h                              TkDetTypeName.cc.not                TopologyBuilderFromXML.cc.not
BladeStruct.h                  ForwardLayerPartitioner.cc      RingedBarrelPixelLayerBuilder.cc.not                TkDumpDetTypes.cc.not               TurbineForwardDetLayer.cc
CmsTrackerBuilder.cc.not       ForwardLayerPartitioner.h       RowStruct.h                                         TkDumpDigiROUDetectors.cc.not       TurbineForwardDetLayer.h
CmsTrackerFromDetUnits.cc.not  FullTracker.cc.Not              SimplePhiTkROUFactory.cc                            TkDumpPositionsAndAxes.cc           TurbineForwardPixelLayerBuilder.cc.not
DetBlade.h                     GeneralBladeLocator.cc          StripDigiROUDividerWithCabling.cc.not               TkDumpPositions.cc.not              TurbineLayer.cc
DetCloserToP.h                 GeneralBladeLocator.h           TBNumberingFactory.cc                               TkDumpRecoGeom.cc.not               TurbineLayer.h
DetCloseToV.h                  GeneralDetLocatorInX.cc         TBTracker.cc                                        TkDumpTopologies.cc.not             TurbineLayer.h~
DetInRow.h                     GeneralDetLocatorInX.h          TkAllRingsDetLayerFactory.cc                        TkForwardLayerBuilder.cc
DetLessLX.h                    GluingDetUnitGrouper.cc         TkBarrelLayerBuilder.cc                             TkGlobalDetUnitToDDDMap.cc.not
DetLocalXExtractor.h           GluingDetUnitGrouper.h          TkDDDSimHitNumberingSchemaFromCmsimGeometry.cc.not  TkLayerName.cc
DetUnitComposite.cc            HipApvKillerPerDetType.cc.not   TkDDDSimHitNumberingSchemaFromCmsimGeometryLess.cc  TkNumberingSchemeFactory.cc.not
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/interface> cd ../src/
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/src>[B][COLOR="DarkOrchid"] mv FixTIDTopology.cc.not FixTIDTopology.cc[/COLOR][/B]
```
  après ça je recompile les bibliothèques ce qui donne 
	
	



```
morad@linux-nzlc:~/Musique/workdir> [B][COLOR="rgb(153, 50, 204)"]./libScript.py[/COLOR][/B]
makeAlpinePackage  ....   INFO        Making package ....                    
makeAlpinePackage  ....   INFO        library :                              
makeAlpinePackage  ....   INFO        SmearingClusterizers will be processed :
makeAlpinePackage  ....   INFO        TkLayout will be processed :           
makeAlpinePackage  ....   INFO        Initialization ...                     
makeAlpinePackage  ....   INFO        Processing ...                         
morad@linux-nzlc:~/Musique/workdir>
```
après ça on recompile pour générer exécutable  heuresement on ne trouve pas 
	
	



```
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FixTIDTopology::FixTIDTopology()' 
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FixTIDTopology::recreateTopologies()'
```


----------



## pheapc (14 Mai 2013)

en s'interéssant à resoudre le problème lie a *FixTIDTopology* ,pou ça on va chercher où se trouve se fichier 
	
	



```
morad@linux-nzlc:~/Musique/workdir> ./myfind . *.h FixTIDTopology
. *.h FixTIDTopology
chercher FixTIDTopology dans les fichiers *.h se trouvant dans .
./library/tklibs/Tracker/TkLayout/interface/TopologyBuilderFromXML.h:  void FixTIDTopologyAndPutInConstructMode();
./library/tklibs/Tracker/TkLayout/interface/TopologyBuilder.h:  void FixTIDTopologyAndPutInConstructMode();
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:#ifndef FixTIDTopology_H
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:#define FixTIDTopology_H
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:class FixTIDTopology {
./library/tklibs/Tracker/TkLayout/interface/FixTIDTopology.h:  FixTIDTopology();
./library/tklibs/Tracker/TkLayout/interface/PartialRedigitizeTID.h: * Patch for the bug explained in FixTIDTopology. To be called in the event loop, 
morad@linux-nzlc:~/Musique/workdir> ./myfind . *.cc FixTIDTopology
. *.cc FixTIDTopology
chercher FixTIDTopology dans les fichiers *.cc se trouvant dans .
./library/tklibs/Tracker/TkLayout/src/PartialRedigitizeTID.cc:#include "Tracker/TkLayout/interface/FixTIDTopology.h"
./library/tklibs/Tracker/TkLayout/src/PartialRedigitizeTID.cc:  FixTIDTopology myFixTIDTopology;
./library/tklibs/Tracker/TkLayout/src/PartialRedigitizeTID.cc:  myFixTIDTopology.recreateTopologies();
grep: ./layout/analyze/.#temp.cc: Aucun fichier ou dossier de ce type
morad@linux-nzlc:~/Musique/workdir> cd library/tklibs/Tracker/TkLayout/interface
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/interface> ls
CmsTrackerBuilder.h            GluedDetUnits.h                  StereoRodDetUnits.h                                TkDumpDetTypes.h            TkRingedTOBLayerBuilder.h
CmsTrackerDetUnits.h           HipApvKillerPerDetType.h         StripDigiROUDividerWithCabling.h                   TkDumpDigiROUDetectors.h    TkROUFactory.h
CmsTrackerFromDetUnits.h       IsBarrelDetUnit.h                TBNumberingFactory.h                               TkDumpPositionsAndAxes.h    TkSequentialMduleNumberingScheme.h
CmsTracker.h                   IsModuleDetUnit.h                TBTracker.h                                        TkDumpPositions.h           TOBDetUnits.h
DetLayerBuilder.h              LayerAccessor.h                  TkAllRingsDetLayerFactory.h                        TkDumpRecoGeom.h            TopologyBuilderFromXML.h
DetUnitComposite.h             MonoRodDetUnits.h                TkBarrelLayerBuilder.h                             TkDumpTopologies.h          TopologyBuilder.h
DetUnitCompositeLeaf.h         NavigationPrinter.h              TkDDDSimHitNumberingSchemaFromCmsimGeometry.h      TkForwardLayerBuilder.h     Tracker.h
DetUnitDigiROUDivider.h        PartialRedigitize.h              TkDDDSimHitNumberingSchemaFromCmsimGeometryLess.h  TkGlobalDetUnitToDDDMap.h   TransientClearingROU.h
DetUnitDigiROUDivider.h~       PartialRedigitizeTID.h           TkDDDSimHitNumberingScheme.h                       TkLayerName.h               TransientROU.h
DetUnitDigiROUDividerSimple.h  RingedBarrelPixelLayerBuilder.h  TkDetLayerFactoryForNumbering.h                    TkNumberingSchemeFactory.h  TransientROU_XML.h
DetUnitROUDivider.h            RodDetUnits.h                    TkDetLayerFactory.h                                TkRingedTECLayerBuilder.h   TurbineForwardPixelLayerBuilder.h
[B][U]FixTIDTopology.h[/U][/B]               RodLayerDetUnits.h               TkDetTypeByName.h                                  TkRingedTIBLayerBuilder.h
FullTracker.h                  SimplePhiTkROUFactory.h          TkDetTypeName.h                                    TkRingedTIDLayerBuilder.h
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/interface> ls ../src/
BarrelLayerPartitioner.cc      DetUnitDigiROUDivider.cc        LayerAccessor.cc                                    TkDDDSimHitNumberingScheme.cc.not   TkRingedTECLayerBuilder.cc.not
BarrelLayerPartitioner.h       DetUnitDigiROUDividerSimple.cc  NavigationPrinter.cc                                TkDetLayerFactory.cc.not            TkRingedTIBLayerBuilder.cc.not
BladeFinder.cc                 DetUnitGluer.cc.not             PartialRedigitize.cc                                #TkDetLayerFactoryForNumbering.cc#  TkRingedTIDLayerBuilder.cc.not
BladeFinder.h                  DetUnitGluer.h                  PartialRedigitizeTID.cc                             TkDetLayerFactoryForNumbering.cc    TkRingedTOBLayerBuilder.cc.not
BladeLessPhi.h                 DetUnitNumbering_TrackerTag.cc  PartialRedigitizeTID.cc~                            TkDetLayerFactoryForNumbering.cc~   TkSequentialMduleNumberingScheme.cc.not
BladeLocator.h                 DetUnitROUDivider.cc            PeriodicBladeLocator.cc                             TkDetTypeByName.cc                  TopologyBuilder.cc.not
BladeStructCloseTo.h           [B][U]FixTIDTopology.cc.not [/U][/B]          PeriodicBladeLocator.h                              TkDetTypeName.cc.not                TopologyBuilderFromXML.cc.not
BladeStruct.h                  ForwardLayerPartitioner.cc      RingedBarrelPixelLayerBuilder.cc.not                TkDumpDetTypes.cc.not               TurbineForwardDetLayer.cc
CmsTrackerBuilder.cc.not       ForwardLayerPartitioner.h       RowStruct.h                                         TkDumpDigiROUDetectors.cc.not       TurbineForwardDetLayer.h
CmsTrackerFromDetUnits.cc.not  FullTracker.cc.Not              SimplePhiTkROUFactory.cc                            TkDumpPositionsAndAxes.cc           TurbineForwardPixelLayerBuilder.cc.not
DetBlade.h                     GeneralBladeLocator.cc          StripDigiROUDividerWithCabling.cc.not               TkDumpPositions.cc.not              TurbineLayer.cc
DetCloserToP.h                 GeneralBladeLocator.h           TBNumberingFactory.cc                               TkDumpRecoGeom.cc.not               TurbineLayer.h
DetCloseToV.h                  GeneralDetLocatorInX.cc         TBTracker.cc                                        TkDumpTopologies.cc.not             TurbineLayer.h~
DetInRow.h                     GeneralDetLocatorInX.h          TkAllRingsDetLayerFactory.cc                        TkForwardLayerBuilder.cc
DetLessLX.h                    GluingDetUnitGrouper.cc         TkBarrelLayerBuilder.cc                             TkGlobalDetUnitToDDDMap.cc.not
DetLocalXExtractor.h           GluingDetUnitGrouper.h          TkDDDSimHitNumberingSchemaFromCmsimGeometry.cc.not  TkLayerName.cc
DetUnitComposite.cc            HipApvKillerPerDetType.cc.not   TkDDDSimHitNumberingSchemaFromCmsimGeometryLess.cc  TkNumberingSchemeFactory.cc.not
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/interface> cd ../src/
morad@linux-nzlc:~/Musique/workdir/library/tklibs/Tracker/TkLayout/src>[B][COLOR="DarkOrchid"] mv FixTIDTopology.cc.not FixTIDTopology.cc[/COLOR][/B]
```
  après ça je recompile les bibliothèques ce qui donne 
	
	



```
morad@linux-nzlc:~/Musique/workdir> [B][COLOR="rgb(153, 50, 204)"]./libScript.py[/COLOR][/B]
makeAlpinePackage  ....   INFO        Making package ....                    
makeAlpinePackage  ....   INFO        library :                              
makeAlpinePackage  ....   INFO        SmearingClusterizers will be processed :
makeAlpinePackage  ....   INFO        TkLayout will be processed :           
makeAlpinePackage  ....   INFO        Initialization ...                     
makeAlpinePackage  ....   INFO        Processing ...                         
morad@linux-nzlc:~/Musique/workdir>
```
après ça on recompile pour générer exécutable  heuresement on ne trouve pas 
	
	



```
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FixTIDTopology::FixTIDTopology()' 
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FixTIDTopology::recreateTopologies()'
```
et voila ce qui sorte premièrement 
	
	



```
morad@linux-nzlc:~/Musique/workdir/layout/analyze> make mainP=runAnalyze
Makefile:78: /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d: Aucun fichier ou dossier de ce type
g++  -MM -m32  -I/cern/CLHEP/2.0.4.5/include/ -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs  -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2  -I/cern/Minuit2/5.28.00/include -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/          myAnalyze.cc > /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d.$$; \
sed 's,\(myAnalyze\)\.o[ :]*,\1.o /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d : ,g' < /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d.$$ > /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d; \
rm -f /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.d.$$
g++  -c -g -m32  -I/cern/CLHEP/2.0.4.5/include/ -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs  -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2  -I/cern/Minuit2/5.28.00/include -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/          myAnalyze.cc -o /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.o  
g++  -c -g -m32  -I/cern/CLHEP/2.0.4.5/include/ -I/home/morad/Musique/workdir/layout -I/home/morad/Musique/workdir/library/tklibs  -I/cern/ROOT/source/root/include  -I/usr/include/freetype2/freetype/  -I/usr/include/freetype2  -I/cern/Minuit2/5.28.00/include -I/usr/include/libxml2 -I/usr/include/libxml++-2.6 -I/usr/lib/libxml++-2.6/include/ -I/usr/include/glibmm-2.4/ -I/usr/lib/glibmm-2.4/include/ -I/usr/include/sigc++-2.0/ -I/usr/lib/sigc++-2.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/ -I/cern/gettext/0.18.2/include/         runAnalyze.cxx -o /home/morad/Musique/workdir/layout/build/analyze/runAnalyze.o
g++  -fopenmp  -L/home/morad/Musique/workdir/library/tklibs/lib -L/home/morad/Musique/workdir/layout/lib  -lxmlgeom -ltrack -lcross -lMaterialEffects -lPropagators -ltracking -lgeom -lStatUtilities -lAnalyticalJacobians -ltkhist -lxmltkgeom -lutils -lopt -ldraw -lanalyze  -L/usr/lib  -lTkLayout -lDetGeometry -lKalmanUpdators  -lDetVolumeGeometry -lPatternTestTools -lRKPropagators -lTkCommonDet -lPatternTools -lTrajectoryParametrization -lBasicStripDet -lDetUtilities -lBasicDet -lGeomPropagators -lPatternPrimitives -lSurfaceGeometry -lBaseMagneticField -lUI -lGenUtil -lSiPixelDet -lSmearingClusterizers -lTrackFitters -lTkFastSimHit -lCommonStripDet -lDetLayout  -lTkNavigation -lNumericalJacobians  -lxml++-2.6 -lxml2 -lglibmm-2.4 -lgobject-2.0 -lsigc-2.0 -lglib-2.0  /usr/lib/preloadable_libintl.so -L/cern/ROOT/source/root/lib  /usr/lib/libX11.so -L/cern/Minuit2/5.28.00/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -lfreetype -lz  /usr/lib/libbz2.so.1.0.6  -pthread -Wl,-rpath,/cern/ROOT/source/root/lib -lpthread  -lm -ldl -lMinuit2  -L/cern/CLHEP/2.0.4.5/lib/ -lCLHEP-2.0.4.5  /usr/lib/libstdc++.so.6 /lib/libutil-2.15.so /lib/libSegFault.so  /home/morad/Musique/workdir/layout/build/analyze/myAnalyze.o  /home/morad/Musique/workdir/layout/build/analyze/runAnalyze.o -o runAnalyze
/home/morad/Musique/workdir/library/tklibs/lib/libSmearingClusterizers.so: undefined reference to `TrivialROUSetter::set(Module)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `TkDetTypeName::shortName(DetType const&)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `DetUnitGluer::glue(__gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >, __gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >, __gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >, __gnu_cxx::__normal_iterator<DetUnit**, std::vector<DetUnit*, std::allocator<DetUnit*> > >)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkFastSimHit.so: undefined reference to `RawHepEventFactoryFromGun::RawHepEventFactoryFromGun()'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `toa::operator()(int const&) const'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `DetBlade::DetBlade(__gnu_cxx::__normal_iterator<Det* const*, std::vector<Det*, std::allocator<Det*> > >, __gnu_cxx::__normal_iterator<Det* const*, std::vector<Det*, std::allocator<Det*> > >)'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `toa::~toa()'
/home/morad/Musique/workdir/library/tklibs/lib/libTkLayout.so: undefined reference to `FullTracker::instance()'
collect2: erreur: ld a retourné 1 code d'état d'exécution
make: *** [runAnalyze] Erreur 1
morad@linux-nzlc:~/Musique/workdir/layout/analyze>
```


----------



## pheapc (15 Mai 2013)

s'il vous plaît je suis entraîne recompiler pour link les bibliothèque j'ai rencontré un problème pour opensuse le compilateur gcc il cherche en première temps les includes avant d'aller de savoir dans qu'il point il aurais besoin ces includes ,par exemple 
	
	



```
#ifndef TimingREPORT_H
#define TimingREPORT_H
//
//
//
//  V 1.1  01/09/2000
//    Fast timing on Pentium
//    on/off control introduced
//    fixed format output
//  V 1.2  21/02/2001
//    cpu time added
//    not thread safe yet...

#include <string>

#ifndef CMS_NO_HASH_MAP
#include <hash_map>
#include "Utilities/GenUtil/interface/stringhash.h"
#else
#include <map>
#endif

#include<iosfwd>

#include "Utilities/Notification/interface/BaseEvent.h"
[COLOR="Green"][B] #include "CommonDet/BasicDet/interface/AlignmentPositionError.h"[/B][/COLOR]

#include "Utilities/GenUtil/interface/CMSTimers.h"

/*  a class to manage Timing
**/
class TimingReport {
public:
  typedef BaseEvent< std::pair<double,double> > ItemObserver;

  class Item {
    typedef BaseEvent< std::pair<double,double> > MyObserver;
  public:
    Item() : on(true), cpuon(true), counter(0), o(0){}
    Item & switchOn(bool ion) {on=ion; return *this;} 
    Item & switchCPU(bool ion) {cpuon=ion; return *this;} 
    void start() { if (on) {counter++; if (cpuon) cpuwatch.start(); stopwatch.start(); }}
    void stop(){ 
      if (on) {
	stopwatch.stop(); 
	if (cpuon) cpuwatch.stop();
	if (active()) return; 
	if (o) (*o)(std::pair<double,double>(stopwatch.lap().seconds(),
					cpuwatch.lap().seconds()));
      }
    }
  public:
    bool active() const { return stopwatch.running();}
    void setObs(MyObserver * io) { o=io;}
    double realsec() const;
    double realticks() const;
    double cpusec() const;
  public:
    bool on;
    bool cpuon;
    int counter;
    StopWatch stopwatch;
    CPUWatch cpuwatch;
    MyObserver * o;

  };

public:
  static TimingReport * current();

protected:

#ifndef CMS_NO_HASH_MAP
  typedef hash_map< std::string, Item, hash<std::string>, std::equal_to<std::string> > SMAP; 
#else
  typedef std::map< std::string, Item, std::less<std::string> > SMAP;
#endif

  TimingReport();

public:
  ~TimingReport();

  ///
  void dump(std::ostream & co, bool active=false);

  /// report in ticks
  bool & inTicks() { return inTicks_;}

  /// switch all on
  void switchOn(bool ion);

  /// switch one ion
  void switchOn(const std::string& name, bool ion) {
    registry[name].switchOn(ion);
  }

  void start(const std::string& name) {
    if(on) registry[name].start();
  }
  void stop(const std::string& name) {
    if (on) registry[name].stop();
  }
  
  Item & operator[](const std::string& name) {
    SMAP::iterator p = registry.find(name);
    if (p!=registry.end()) return (*p).second;
    return make(name);
  }
  
  const Item & operator[](const std::string& name) const {
    SMAP::const_iterator p = registry.find(name);
    if (p!=registry.end()) return (*p).second;
    return const_cast<TimingReport*>(this)->make(name);
  }

  Item & make(const std::string& name) {
    return registry[name].switchOn(on);
  }

  const bool & isOn() const { return on;} 

private:
  
  bool on;
  bool inTicks_;
  SMAP registry;


};

/** a class to time a "scope" to be used as a "Sentry".
Just create a TimeMe object giving it a name;
exiting the scope the object will be deleted;
the constuctor starts the timing.
the destructor stops it.
 */
class TimeMe{

public:
   ///
  explicit TimeMe(const std::string& name, bool cpu=true) :
    item((*TimingReport::current())[name]) {
    item.switchCPU(cpu);
    item.start();
  }

  explicit TimeMe(TimingReport::Item & iitem, bool cpu=true) :
    item(iitem) {
    item.switchCPU(cpu);
    item.start();
  }

  std::pair<double,double> lap() const { 
    return std::pair<double,double>(item.stopwatch.lap().seconds(),
			       item.cpuwatch.lap().seconds());
  }
 
  ///
  ~TimeMe() {
    item.stop();
  }
  
private:
  
  TimingReport::Item & item;
  
};


#endif
```
 alors il me demande de vérifier le chemin de #include "CommonDet/BasicDet/interface/AlignmentPositionError.h" même si on est plus besoin de ce fichier ma question :*est ce qu'il ya une FLAGS pour le réorienter*


----------

