Hi guys,
There seems to be some difficulty compiling against ROOT on Ubuntu 14.04.4 (kernel 3.13.0-79-generic on 64 bit machine). The root version is 5.34/36 and gcc is 4.8.4. Using the same version of root on CentOS (gcc of 4.8.5-4), there are no errors. I get the following on Ubuntu (which is where we’d like to do our analysis):
(sorry for the large mess here).
make SortDGS
g++ -O -Wall -fPIC -pthread -m64 -I/usr/local/include/root -L/usr/local/lib/root -lNew -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -lm SortDGS.cc -o …/bin/SortDGS
SortDGS.cc: In function ‘int main(int, char**)’:
SortDGS.cc:223:26: warning: variable ‘tsLast’ set but not used [-Wunused-but-set-variable]
unsigned long long int tsLast=0;
^
In file included from SortDGS.cc:49:0:
DGSDecomp.cc: In function ‘unsigned int* GetEvBuf(FILE*, const char*, GEBheader*)’:
DGSDecomp.cc:18:38: warning: ignoring return value of ‘size_t fread(void*, size_t, size_t, FILE*)’, declared with attribute warn_unused_result [-Wunused-result]
fread(EventBuf,Header->length,1,fp);
^
/tmp/ccogTKSb.o: In functionsetuproot(TFile*)': SortDGS.cc:(.text+0x182f): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x186c): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x18ce): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x190b): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x196d): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x19aa): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x19f2): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x1a27): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x1a6f): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x1aa4): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x1af9): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x1b3a): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x1b86): undefined reference to
TStorage::ObjectAlloc(unsigned long)’
SortDGS.cc:(.text+0x1bc7): undefined reference toTH2F::TH2F(char const*, char const*, int, double, double, int, double, double)' SortDGS.cc:(.text+0x1be1): undefined reference to
TObject::operator delete(void*)’
SortDGS.cc:(.text+0x1bf4): undefined reference toTObject::operator delete(void*)' SortDGS.cc:(.text+0x1c07): undefined reference to
TObject::operator delete(void*)’
SortDGS.cc:(.text+0x1c1a): undefined reference toTObject::operator delete(void*)' SortDGS.cc:(.text+0x1c2d): undefined reference to
TObject::operator delete(void*)’
/tmp/ccogTKSb.o:SortDGS.cc:(.text+0x1c40): more undefined references toTObject::operator delete(void*)' follow /tmp/ccogTKSb.o: In function
main’:
SortDGS.cc:(.text+0x2ce0): undefined reference toTStorage::ObjectAlloc(unsigned long)' SortDGS.cc:(.text+0x2d03): undefined reference to
TFile::TFile(char const*, char const*, char const*, int)’
SortDGS.cc:(.text+0x2f09): undefined reference toTObject::operator delete(void*)' /tmp/ccogTKSb.o: In function
_GLOBAL__sub_I_SortDGS.cc’:
SortDGS.cc:(.text+0x2f4c): undefined reference to `TVersionCheck::TVersionCheck(int)’
collect2: error: ld returned 1 exit status
make: *** [SortDGS] Error 1
The make file I was given is as follows:
ROOTINC = $(shell root-config --cflags)
ROOTLIB = $(shell root-config --new --libs)
BIN = ../bin
CC = g++
CCFLAG = -O -Wall -fPIC
SortDGS: SortDGS.cc DGSCHICO.h DGSDecomp.cc InitBase.cc BinDGS.cc
$(CC) $(CCFLAG) $(ROOTINC) $(ROOTLIB) $(CCENV) -lm $< -o $(BIN)/$@
I don’t see anything obviously wrong with this. Also the 2 shell commands at the beginning give what I’d expect. For example, the include directory does have TH2F.h (and going back to TH2.h), the constructor for which make is complaining about, is there and seems to have the constructor in question. The lib directory goes back to /usr/local/lib/root and everything seems to be o.k. there. I can supply the source codes I’m trying to compile if anybody wants to try it, but hopefully, it’s just something silly in the Makefile we’re all missing here.
Thanks,
Tim