Re: Trying to bring up root 2.00/09 using the Makefile

Fons Rademakers (Fons.Rademakers@cern.ch)
Wed, 01 Jul 1998 21:20:33 +0200


Hi Fraser,

RH5.1 has only the egcs C++ compiler. Therefore download the
egcs version of ROOT (see http://root.cern.ch/root/Version200.html).

The source file distribution does not work stand-alone. You have
to untar and unzip it in your $ROOTSYS directory where you installed
the binary distribution. In that case you'll also have the lib, bin,
icons, tutorials, etc. directories.

To compile and your system, goto $ROOTSYS/src and do:

ln -s Makefile.linuxegcs Makefile

Cheers, Fons.

PS: on RH5.1 I like to make an alias/link of gcc to /usr/bin/egcs so also
the standard C compiler is egcs and not /usr/bin/gcc (which is 2.7.2).

Fraser Duncan wrote:
>
> A few comments on the Makefile distributed with 2.00/09 source.
> I am trying to get root running on what redhat linux 5.1. To
> make things interesting the version of redhat 5.1 that I have is
> (I think) slightly nonstandard. Anyway, I thought that I would
> report a couple of things that I found.
>
> 1/
> First I tried to install root 2.00/09 right out of the box. The
> root interpreter would work fine but when I tried to compile the
> test codes in $ROOTSYS/test/ it failed miserably. I got the following:
>
> ---------------------------------------------------
> [fduncan@cygnus test]$ make
> g++ -O -Wall -fPIC -I/home/tools/root/include -c Event.cxx
> Generating dictionary ...
> Note: operator new() masked 1c
> Note: operator delete() masked 1c
> class EventHeader in Event.h line 19 original base of virtual func
> g++ -O -Wall -fPIC -I/home/tools/root/include -c EventCint.cxx
> g++ -O -Wall -fPIC -I/home/tools/root/include -c MainEvent.cxx
> g++ -Wl,-soname,libEvent.so -shared -g Event.o EventCint.o -o libEvent.so
> g++ -g MainEvent.o Event.o EventCint.o -L/home/tools/root/lib -lNew -lBase
> -lCint -lClib -lCont -lFunc -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta
> -lMinuit -lNet -lPostscript -lProof -lTree -lUnix -lZip -lg++ -lm -ldl
> -rdynamic -o Event
> /usr/bin/ld: warning: libstdc++.so.2.7.2, needed by
> /home/tools/root/lib/libNew.so, may conflict with libstdc++.so.2.8
> Event.o: In function `Event type_info function':
> Event.o(.text+0x1308): undefined reference to `TObject type_info function'
> Event.o(.text+0x130e): undefined reference to `TObject type_info node'
> EventCint.o: In function `Track type_info function':
> EventCint.o(.text+0x5084): undefined reference to `TObject type_info
> function'
> EventCint.o(.text+0x508a): undefined reference to `TObject type_info node'
> collect2: ld returned 1 exit status
> make: *** [Event] Error 1
> [fduncan@cygnus test]$
>
> ---------------------------------------------------
>
> I suspected that this is an incompatability with the redhat 5.0 and 5.1
> libraries. I don't know if anybody else has this problem but I am
> reporting it just in case it is of interest. As I said, it may be due
> to either the fact that I am using redhat 5.1 or that I have a slightly
> nonstandard version.
>
>
> 2/ Then I tried using the make file to build root from scratch. There
> are a couple of things that I wanted to point out that are not big
> problems with the make files but they would tidy things up a bit.
>
> This is what I found:
>
> * I untarred the source tree in a new directory /data1/fduncan/root/
> * I made the link in src/
> ln -s Makefile.linux Makefile
> * I ran make
>
> Problems: 1) there were no bin/ and lib/ directories so I created
> them by hand.
> Could the standard distribution have these put in?
>
> 2) The make crashed when it couldn't find libXpm.a
> It took me a while to realize that it is a system
> library and not supposed to be distributed with root.
> Part of the confusion was that if I look in old
> versions of root, libXpm.a is in $ROOTSYS/lib.
>
> Maybe the make file could be changed to not make it
> look like libXpm.a is supposed to be in $ROOTSYS/lib
> (Also I guess you need libXpm.so to run applications...)
>
> 3) There was no $ROOTSYS/include directory with the header
> files in it.
>
> Could the make file create and stuff this directory?
>
> 4) There was no $ROOTSYS/icons directory. I stole the
> directory from the binary distribution of 2.00/09
>
> The last problem with building root from scratch is probably my fault.
> When I compiled the programs in the test directory I got a warning:
>
> ---------------------------------------------
> g++ -O -Wall -fPIC -I/data1/fduncan/root/include -c hworld.cxx
> g++ -g hworld.o -L/data1/fduncan/root/lib -lNew -lBase -lCint -lClib
> -lCont -lFunc -lGraf -lGraf3d -lHist -lHtml -lMatrix -lMeta -lMinuit -lNet
> -lPostscript -lProof -lTree -lUnix -lZip -lGpad -lGui -lGX11 -lX3d
> -L/usr/X11R6/lib -lXpm -lX11 -lg++ -lm -ldl -rdynamic -o hworld
> /usr/bin/ld: warning: libstdc++.so.2.7.2, needed by /usr/lib/libg++.so,
> may conflict with libstdc++.so.2.8
> hworld done
> ----------------------------------------------
> I don't know if this is a problem with my linux installation or if
> it is a problem with the way the root libraries are made.
>
> Hope these comments are helpfull.
>
> - Fraser Duncan

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland          Phone: +41 22 7679248
E-Mail: Fons.Rademakers@cern.ch              Fax:   +41 22 7677910