[ROOT] Re: your mail

From: Patois Yannick (patois@ganil.fr)
Date: Thu Jul 27 2000 - 15:28:04 MEST


On Thu, 27 Jul 2000, Cherlin Alexander wrote:

> 	Hello, 
> I try to compile my stuff and this is the error which I get:
> 
> -lmathlib -lpacklib -lkernlib -lg2c -lc -L/usr/X11R6/lib -lXpm
> -lX11 -lm -lXt -lXext -lXi -ldl -lpthread
> -L/home/cerescdr/display/irix/lib -lXm -lXp -L/srv01/cgrp/phenix/root/lib
> -lNew -lCore -lCint -lHist -lGraf -lGraf3d -lGpad -lTree -lRint
> -lPostscript -lMatrix -lPhysics -lm -ldl -rdynamic 
> /srv01/cgrp/phenix/root/lib/libCore.so: undefined reference to `__log1p'
> collect2: ld returned 1 exit status
> make: *** [analyze] Error 1

Looks like g++ options...

That's what I use on a linux-i686 workstation, also compiling with some
bits of fortran code as you seems to use (lg2c), and cernlib.

(part of the Makefinle of interest)

<<<<<<<<<<<<<<<<<

CPC      =      egcs
LD       =      egcs


ROOTCFLAGS    = $(shell root-config --cflags)
ROOTLIBS      = $(shell root-config --libs)
ROOTGLIBS     = $(shell root-config --glibs)
COMMONFLAGS   = -O3 -mpentiumpro

CPCflags =    $(COMMONFLAGS)  \
                  -I$(ROOTSYS)/include

CPCsharedflags= -KPIC  \
                $(COMMONFLAGS) $(WARNINGFLAGS) -I$(ROOTSYS)/include
CPCDICflags   = -KPIC  \
                $(COMMONFLAGS) $(WARNINGFLAGS) -I$(ROOTSYS)/include


ldflags  =    $(COMMONFLAGS) -Wall \
                       $(ROOTLIBS) \
                        -L$(CERNLIB) -lpacklib -lmathlib -lkernlib \
                        -lgraflib -lpawlib \
                        -lm -lc -ldl -rdynamic \
                        -lg2c

CPFflags =       $(COMMONFLAGS) -Wall -fno-second-underscore

.SUFFIXES :
.SUFFIXES : .cpp .cxx .H .C .f .dict_o .o

# The app
$(ORLYSE):     
                @$(LD) \
                $(OBJLYSE) $(OBJSHARED) $(OBJDICT) \ # my objects
                $(ldflags) \
                -o $(ORLYSE)

#The shared lib
$(ROOTSHARED):  $(OBJDICT) $(OBJSHARED)
                @$(LD) $(OBJDICT) $(OBJSHARED) $(COMMONFLAGS) \
                -shared -o $(ROOTSHARED)


.cpp.o:
        @echo compilation of $<
        $(CPC) $(CPCflags) $< -c -o $@
.cxx.o:
        @echo compilation of shared $<
        $(CPC) $(CPCsharedflags) $< -c -o $@
.f.o:
        @echo compilation of $<
        $(CPF) $(CPFflags) $< -c -o $@
.H.C:
        @echo "Generating dictionary ..."
        @rootcint $@ -c -DFOR_SHARE $<
.C.dict_o:
        @echo compilation of dico $<    
        $(CPC) $(CPCDICflags) $< -c -o $@


>>>>>>>>>>>>>>

Of course most of this stuff is crap (but "if it works, dont fix it" ;)
and could be written better.

I name CINT generated objects .dict_o and the code I want to share is in
.cxx files (other code is in .cpp files).

I cant tell what you forget there, most of the time the problems comes
from the fact that you declare your symbols too early. Maybe the -lc and
-lg2c libs should be near the end, after the cernlib declarations.

If you are really using g++ (or egcs) on a linux-ix86, I can send you
the full Makefile and an 'env' dump if nobody gives ou the answer in
two lines :)

	Yannick



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:30 MET