Hi Daniel,
Your link sequence is not correct.
We provide $ROOTSYS/bin/root-config in the standard Root distribution.
See for example in $ROOTSYS/test/Makefile how this is used.
This small script generates automatically the correct link procedure
in a system/compiler independent way. We always recommend to use this
script instead of an adhoc list of libraries. If we add/remove a library
in the next versions, this procedure will always work.
type root-config
to see the list of options.
Rene Brun
Daniel Cussol wrote:
>
> Hello everybody,
> I am a newcomer in Root system. I am running the 2.25 version on a unix
> Alpha OSF1 using cxx. I tried to implement in Root a personal
> Class THEvsN dervied from TH2F.
>
> //
> // Declaration des spectres E*/N vs N
> //
>
> #include "Rtypes.h"
> #include "TH2.h"
>
> class THEvsN:public TH2F
> {
> public:
> int np,nc;
> float Edisp;
>
> THEvsN(void);
> THEvsN(TH2F *spec);
> ~THEvsN(void);
>
> virtual void Draw(Option_t *option);
>
> ClassDef(THEvsN,1)
>
>
> };
> =============================================================================
> //
> // Implementation des spectres E*/N vs N
> //
> #include <iostream.h>
> #include <stdio.h>
> #include <math.h>
> #include "TGraph.h"
> #include "THEvsN.h"
>
> ClassImp(THEvsN)
>
> THEvsN::THEvsN(void):TH2F()
> {
> np=0;
> nc=0;
> Edisp=0.;
> }
>
> THEvsN::THEvsN(TH2F *spec):TH2F(*spec)
> {
> char titre[80];
> sprintf(titre,"%s (THEvsN)\0",spec->GetName());
> SetName(titre);
> cout << "L'histogramme "<< this->GetName() << " de type THEvsN a ete cree." << endl;
> }
>
> THEvsN::~THEvsN(void)
> {
> }
>
> void THEvsN::Draw(Option_t *option)
> {
> TGraph *graph=new TGraph();
> int i;
> int nbe=100;
> float epl[100];
> float am[100];
> float em[100];
> float esa[100];
> float eplb[100];
> float rm[100];
> float qm[100];
>
> FILE *fstatic=fopen("/home/grpun/cussol/n_corps/statique/statique_1_100.data","r");
>
> printf("fstatic=%d\n",fstatic);
>
> for (i=0;i<nbe;i++)
> {
> fscanf(fstatic,"%f %f %f %f %f %f\n",&am[i],&rm[i],&esa[i],&eplb[i],&rm[i],&qm[i]);
> }
> fclose(fstatic);
>
> cout << nbe << " valeurs dans les tableaux..." << endl;
> TH2F::Draw(option);
> for (i=0;i<nbe;i++)
> epl[i]=-esa[i];
> graph->SetLineColor(4);
> graph->DrawGraph(nbe,am,epl,"l");
> for (i=0;i<nbe;i++)
> epl[i]=-eplb[i];
> graph->SetLineColor(6);
> graph->DrawGraph(nbe,am,epl,"l");
> }
>
>
> I have read the .html pages related to
> that subject. So I use the following Makefile:
> #---------------------------------------------------
> CXXFLAGS = -g -z -I${ROOTSYS}/include
> LDFLAGS = -g -z -shared -L${ROOTSYS}/lib/ -rpath ${ROOTSYS}/lib/
> LD = ld
>
> COMPIL = cxx
>
> LIBS = ${ROOTSYS}/lib/*.so -lXpm -lX11 -lm -lcxx -lc
>
> HDRS = THEvsN.h
>
> SRCS = main_root.C THEvsN.C mydict.C
>
> OBJS = main_root.o THEvsN.o mydict.o
>
> PROGRAM = monroot
>
> all: ${PROGRAM}
>
> ${PROGRAM}: ${OBJS}
> @echo "Linking ${PROGRAM} ..."
> @${LD} ${LDFLAGS} ${OBJS} ${LIBS} -o ${PROGRAM}
> @chmod +x ${PROGRAM}
> @echo "done"
>
> clean:; @rm -f ${OBJS} core
>
> ###
> THEvsN.o: THEvsN.h THEvsN.C
> @echo "Compilation de THEvsN.C"
> @$(COMPIL) -c ${CXXFLAGS} THEvsN.C
>
> main_root.o: THEvsN.h main_root.C
> @echo "Compilation de main_root.C"
> @$(COMPIL) -c ${CXXFLAGS} main_root.C
>
> mydict.o: mydict.C
> @echo "Compilation de mydict.C"
> @$(COMPIL) -c ${CXXFLAGS} mydict.C
>
> mydict.C: THEvsN.h
> @echo "Generating dictionary ..."
> @rootcint mydict.C -c THEvsN.h
> #---------------------------------------------------
>
> The compilation and the linking are OK. But when I run
> my executable file "monroot", the following error occurs:
>
> 346626:monroot: /sbin/loader: Error: Unresolved symbol in
> /usr/shlib//libc.so: _end
> 346626:monroot: /sbin/loader: Fatal Error: this executable has
> unresolvable symbols
>
> I suspect an error in load flags definitions or in the copiler flag
> definitions, but I can not find it. Did somebody had this problem? Could
> somebody help me?
>
> Thanks in advance
> Friendly
>
> Daniel CUSSOL
>
> LPC Caen
> Boulevard du Marechal Juin
> 14050 CAEN CEDEX
>
> e-mail : cussol@in2p3.fr
> Tel : +33-(0)2-31-45-29-73
> FAX : +33-(0)2-31-45-25-49
This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:36 MET