Re: problems compiling brat-2.0.12.tar.gz

From: Christian Holm Christensen (cholm@hehi03.nbi.dk)
Date: Mon Jun 24 2002 - 16:32:39 EDT

  • Next message: Andrey Makeev: "more ZDC calibrations added"

    Hi James et al, 
    
    First off: I'm not going to quote your full mails, as the rather long
    make sequences are irrelevant - please cut it down to basics (the last
    couple of lines or so). 
    
    On Fri, 21 Jun 2002 13:43:11 -0500
    jnorris <jnorris@ku.edu> wrote
    concerning "problems compiling brat-2.0.12.tar.gz":
    > People,
    > 
    > I'm having trouble compiling brat-2.0.12, and if there's anyone out
    > there (even Ian), 
    
    He was mean wasn't he?  I for one, would say that the Mac's does have
    one advantage - they use a proper chip, not that lousy (but cheap)
    i386 chip  that most of us have to deal with. 
    
    Have you compiled ROOT on MacOSX?  If so, you're good, and you may be
    able to compile BRAT out of the box, assuming that your libtool
    installation knows about the MacOSX stuff.  Otherwise, first try to
    build ROOT (search roottalk for MacOSX, some one wrote a guide), and
    the experience you gain there will help you to build BRAT :-) 
    
    > who can help, I'd really appreciate it. 
    > 
    > The error I'm running into is:
    
    <snip> a lot of superflous stuff that I don't want to quote</snip>
    
    > 	c++ -g -O2 -o .libs/brdbcalib
    > 	-L/home/jnorris/brahms/cern/root_v3.00.06/lib -rdynamic
    > CreateCalib.o
    > 	DbUtils.o -lCore -lCint -lHist -lGraf -lGraf3d -lGpad -lTree -lRint
    > 	-lPostscript -lMatrix -lPhysics -lm -ldl
    > 	../../data/abc/.libs/libBratDataAbc.so
    > 	../../managers/.libs/libBratManager.so
    > ../../util/.libs/libBratUtil.so
    > 	../../db/.libs/libBratDb.so -Wl,--rpath
    > 	-Wl,/home/jnorris/brahms/cern/2000/lib
    > 	../../data/abc/.libs/libBratDataAbc.so: undefined reference to
    > 	`TBuffer::TBuffer(TBuffer::EMode, int, void *, unsigned char)'
    > 	../../data/abc/.libs/libBratDataAbc.so: undefined reference to
    > 	`TObject::Execute(TMethod *, TObjArray *, int *)'
    > 	../../data/abc/.libs/libBratDataAbc.so: undefined reference to
    > 	`TObject::Execute(char const *, char const *, int *)'
    > 	collect2: ld returned 1 exit status
    
    <snip> a lot of superflous stuff that I don't want to quote</snip>
    
    Looks like you were using an old ROOT.  
    
    > I get this after:
    > 
    > 	prompt> aclocal -I config
    > 	prompt> automake -a
    > 	prompt> autoconf
    > 	prompt> ./configure --prefix=/home/jnorris
    >             --with-rootsys=/home/brahms/root/lib 
    > 	      --libdir=/home/jnorris/brahms/cern/2000/lib 
    	      --etcdir=/etc/root --enable-rpath
    
    The options `--etcdir' and `--enable-rpath' are not defined for the
    BRAT `configure' script  (see more below). 
    
    > Now I copied these ./configure flags(?) out of the README - I am
    > reading these now,  Christian! 
    
    There's no such thing in the README file of BRAT - only `The Guide'
    has that information.  
    
    > - and the only 'etc' in the README has to do with "read-only
    > single-machine data in DIR [PREFIX/etc]".  
    
    You're reading the stuff that pertains to ROOT, not BRAT.  Take a look
    again (and this time read the full text :-), and you'll see 
    
      \paragraph{A small tip} 
      \begin{quote}
        You can install ROOT in the same directories
        by doing  
      \begin{verbatim}
          prompt% ./configure --prefix=/usr/local \
                              --libdir=/usr/local/lib \
                              --etcdir=/usr/local/etc/root \
                              --enable-rpath
      \end{verbatim}
        in the ROOT source tree. In that way, you have everything in one   
        place, and you only need to have \texttt{/usr/local/bin} in your path, 
        and everything should work nicely.  No need to set environment
        variables. 
      \end{quote}
    
    No where when the configuration of BRAT is dealt with is the option
    `--etcdir' mentioned. 
    
    > But I have no /home/jnorris/etc, so I didn't really expect: 
    > 
    > 	prompt> ./configure --prefix=/home/jnorris
    > --with-rootsys=/home/brahms/root/lib 
    > > --libdir=/home/jnorris/brahms/cern/2000/lib --enable-rpath
    > > --sysconffidr=/home/jnorris/etc
    >
    > to help any.  
    
    The `sysconfdir' isn't used in BRAT.  It's just that it's a standard
    option for `configure' scripts. 
    
    > And in fact, it resulted in a new error message: 
     
    <snip> a lot of superflous stuff that I don't want to quote</snip>
    
    > 	../../data/abc/.libs/libBratDataAbc.so: undefined reference to
    > 	`TBuffer::TBuffer(TBuffer::EMode, int, void *, unsigned char)'
    > 	../../data/abc/.libs/libBratDataAbc.so: undefined reference to
    > 	`TObject::Execute(TMethod *, TObjArray *, int *)'
    > 	../../data/abc/.libs/libBratDataAbc.so: undefined reference to
    > 	`TObject::Execute(char const *, char const *, int *)'
    > 	collect2: ld returned 1 exit status
    
    which is the same error as above :-)  That is, it has nothing to do
    with your `configure' options, and everything to do with you having a
    really _really_ REALLY old ROOT installed. 
     
    > Anyway, it's all beyond me and desperation is setting in, so:
    > 
    > HELP!!!
    
    I'm trying :-)  
    
    On Sat, 22 Jun 2002 10:26:52 -0500
    jnorris <jnorris@ku.edu> wrote
    concerning "RE: problems compiling brat-2.4.1":
    > Flemming et al,
    > 
    > > ----------
    > > From: 	Flemming Videbaek
    > > Reply To: 	brahms-dev-l@bnl.gov
    > > Sent: 	Friday, June 21, 2002 1:56 PM
    > > To: 	brahms-dev-l@bnl.gov
    > > Subject: 	Re: problems compiling brat-2.0.12.tar.gz
    > > 
    > > James,
    > > 
    > > I do not think you will get much help with version 2.0.12 we are up to
    > > 2.3.17 for pro and 2.4.1 for new.
    > > Too I think the default root is 3.03/04 in /opt/brahms/new and pro.
    >
    > OK, I'm fairly modern now, though as always, a _little_ bit behind
    > the times - I have ROOT 3.03/06 and BRAT 2.4.1.
    
    Which is pretty new. 
    
     
    > I'm installing as su, so what I've done is:
    
    Whoha, you really want to do that?  If your using Red Hat Linux of
    Debian GNU/Linux, I strongly suggest you build ROOT as RPMs or
    DEBs.  Please refer to the documentation in README/INSTALL in the ROOT
    source tree.  You can get ROOT 3.02/07 RPMs and DEBs from my web site
    at CERN [1].  Notice that it's also possible to make an RPM of BRAT -
    it's documented in ... yes you guessed it ... `The Guide'.  
    
    > prompt> aclocal -I config ; \
    >         automake -a ; \
    >         autoconf 
    >         ./configure --prefix=/usr/local \
    >                     --libdir=/usr/local/lib \
    >                     --etcdir=/usr/local/etc/root \
    >                     --enable-rpath
    > and I'm told that --etcdir=/usr/local/etc/root is an invalid option
    > and that I should do a ./configure --help.  Unfortunately, the only
    > reference 'etc' is:
    
    See above for an explanantion of this. 
    
    > So I tried:
    > 
    > prompt> ./configure --prefix=/usr/local \
    >                     --libdir=/usr/local/lib \
    >                     --sysconfdir=/usr/local \
    >                     --enable-rpath
    > 
    > and 
    > 
    > prompt> ./configure --prefix=/usr/local \
    >                     --libdir=/usr/local/lib \
    >                     --sysconfdir \
    >                     --enable-rpath
    > 
    > and finally simply:
    > 
    > prompt> ./configure --prefix=/usr/local \
    >                     --libdir=/usr/local/lib \
    >                     --enable-rpath
    
    As I said above, the `--enable-rpath' option isn't defined for the
    BRAT `configure' script, but the convention is that `configure'
    scripts must ignore `--enable-<whatever>' options it doesn't know, as
    sub-package `configure' scripts may need them - hence the above
    succeeds. 
     
    > None of these three lead to errors, so I shoot for the moon with:
    > 
    > prompt> make
    > 
    > And get shot down myself with the following error each time:
    
    <snip> a lot of superflous stuff that I don't want to quote</snip>
     
    > 	/usr/bin/ld: cannot find -lMySQL
    
    Kris explained this. 
     
    > I have gone to root.cern.ch, and they mention:
    > 
    > 	#export MYSQL=              # must contain include/ lib/ 
    > 
    > under the section about "Installing optional add-on libraries".  But
    > since root compiled without complaint, I don't know what to do. 
    
    The use of options for ROOT's `configure' script is documented in This
    the README/INSTALL file (I should know, I wrote a large portion of it)
    - yep, that's another RTM for you :-).  If you have superuser access
    to your machine, why don't you just install a MySQL package and have
    it over with?  RPMs and DEBs exists.   
    
    On Sat, 22 Jun 2002 11:07:56 -0500
    jnorris <jnorris@ku.edu> wrote
    concerning "RE: problems compiling brat-2.4.1":
    > People,
    > 
    > While waiting for someone to come to my rescue, I tried to do what I could
    > to make the installation of everything as standard as possible, and
    > installed root as su by doing the following:
    > 
    > /home/jnorris/brahms/root> ./configure linuxppcegcs
    >                            --prefix=/usr/local 
    >                            --enable-soversion
    > /home/jnorris/brahms/root> gmake
    > /home/jnorris/brahms/root> gmake install
    
    Are you using YellowDog?  Don't - use Debian GNU/Linux instead
    (version 3.0 code name `woody'  will soon hit an archive near you). 
    
    > and this seems to have worked and root 3.03/06 runs beautifully.
    > 
    > (Now I sould probably say, http://root.cern.ch/root/Install.html says:
    > 
    > 	It's strongly recommended to enable version numbers in sonames (if
    >       possible) using this method (see --enable-soversion
    >       below). Also, using the --enable-rpath option to "configure"
    >       you can set the load path to the ROOT libraries on the
    >       applications. However, this is not recommended if you have
    >       soome other way (like /etc/ld.so.conf) of making the dynamic
    >       loader aware of where you installed the ROOT libraries.
    > 
    > Of course, the bums don't hyperlink to the --enable-soversion
    
    That page is more or less automatically created from README/INSTALL,
    so you can't expect it to be extensively hyperlinked. 
    
    > - it strikes me as quite strange the that the guys who claim 
    > to have invented the internet 
    
    I don't think anyone at CERN claims to have invented the internet,
    while some do claim (and rightly so) to have invented the World Wide
    Web. 
    
    > don't seem to know how to use it very well! 
    
    Well, why don't you download the above page, edit it so that it's
    fully hyperlinked, and send it to root-dev@root.cern.ch and they will
    probably post that and thank you for the effort.  ROOT works like that
    you know. 
    
    > and I'm not sure I understand what it is trying to tell me to do:  
    > 
    > 	soversion
    >         Include the major version number of ROOT in the soname of
    >         the shared libraries. This means that you'll have an
    >         additional check on whether your applications are linked to
    >         the proper runtime libraries. It's strongly encouraged to
    >         use this option. This options is only supported on some 
    >         platforms. Default is false.
    
    If you don't understand sonames, read the GCC-Howto manual on that, or
    just accept that sonames is A Good Thing(tm). 
    
    > I hope I did the right thing!  I have already modified my
    > /etc/ld.so.conf to read:
    > 
    > usr/X11R6/lib
    > /usr/kerberos/lib
    > /usr/lib/qt-2.2.1/lib
    > /usr/lib/qt-1.45/lib
    > /opt/kde2/lib
    > /opt/kde/lib
    > /home/jnorris/brahms/root/lib
    
    If you have the guts to do this, why are you writting to this list? Is
    `/home/jnorris/brahms/root/lib' really the right path?  Shouldn't it
    be `/usr/local/lib/root'?  Remember to run `ldconfig' (as root) after
    modifying `/etc/ld.so.conf'.  Please note that there's a good reason
    why there exists a superuser on Unix systems - if you get something
    wrong it can be devastating, and the system will not tell you until
    disaster strikes.  Hence, unless you really know what you're doing,
    stay well clear of modifying things under  
    
      bin
      boot
      dev
      etc
      initrd
      lib
      proc
      root
      sbin
      usr
      var
    
    that is everything but `/home'.  
    
    Anyway, if you use /etc/ld.so.conf, don't pass the --enable-rpath
    option to ROOT's configure script, and _do_ pass the
    --enable-soversion option.   Also, you should install your ROOT
    libraries in `/usr/local/lib/root' (see `The Guide' and
    README/INSTALL). 
    
    
    > So I tried to install brat again:
    > 
    > home/jnorris/brahms/brat> aclocal -I config ; automake -a ; autoconf
    > home/jnorris/brahms/brat> ./configure linuxppcegcs --prefix=/usr/local
    >                           --enable-rpath
    
    Instead of ';' use '&&' so that if one command fials, the rest will
    not be executed.  Also notice the `autogen' script in BRAT. Doing 
    
      ./autogen --prefix=/usr/local 
    
    (remember, `--enable-rpath' isn't defined for the BRAT configure
    script) is equivilant to the above to lines, except that it will stop
    execution if one of the programs fails. 
    
    > home/jnorris/brahms/brat> gmake ; gmake install
    
    On Linux, you can make do with 
    
      make install 
    
    as it will both build and install BRAT directly (Notice that `make
    install' doesn't  work for ROOT unless you did a vanilla `make'
    first). 
     
    > but got the same error message:
    > 
    > 	cannot find -MySQL
    > 
    > Should I just go out back and shoot myself?
    
    Try following Kris' advice first, and then if it fails, I suggest a
    Magnum .44 "the most powerful handgun in the world". 
    
    To summarise: 
    
    * Build ROOT with MySQL support enabled. 
    * Don't pass odd options to the `configure' scripts
    * Read the manuals, and read it all, not just the parts that stand
      out.
    
    Hope that helps and explains things a bit. 
    
    Yours, 
    
     ____ |  Christian Holm Christensen 
      |_| |	 -------------------------------------------------------------
        | |	 Address: Sankt Hansgade 23, 1. th.  Phone:  (+45) 35 35 96 91
         _|	          DK-2200 Copenhagen N       Cell:   (+45) 24 61 85 91
        _|	          Denmark                    Office: (+45) 353  25 305
     ____|	 Email:   cholm@nbi.dk               Web:    www.nbi.dk/~cholm
     | |
    
    [1] http://cholm.home.cern.ch/cholm/root/#rpm
    



    This archive was generated by hypermail 2b30 : Tue Jun 25 2002 - 09:05:25 EDT