Re: Compiling ROOT as 32bit on a 64 bit Maschine

From: Konstantin Olchanski <olchansk_at_triumf.ca>
Date: Wed, 6 Jun 2012 11:37:02 -0700


On Wed, Jun 06, 2012 at 11:27:40AM +0200, Joern Wuestenfeld wrote:
>
> I have some Problem compiling ROOT as a 32bit executable in an 64 bit
> environment.
>

Unfortunately you do not tell us which version of ROOT and which OS you are using (could be 64-bit VMS and ROOT 0.99, for all I know).

But on "industry standard" RHEL/SL6.2, ROOT v5.32.03 cross-compiles just fine.

I do this:

  1. setarch i386
  2. build.sh (see below)

This usually fails until I install all missing/required 32-bit devel packages, an inclusive list is below: (it includes other random packages required in our environement, trim it as needed):

yum install --skip-broken giflib.i386 giflib.i686 giflib.x86_64 compat-libf2c-34.i386 compat-libf2c-34.i686 mysql-devel mysql-devel.i686 openssl-devel.i686 sysstat "libusb-devel*" unixODBC-devel unixODBC-devel.i686 postgresql-devel libxml2-devel libXpm-devel libgfortran libstdc++-devel.i386 libstdc++-devel.i686 git compat-readline43 "graphviz*" dcap "zlib-*.i686" "libXext-*.i686" "libXtst-*.i686" "tigervnc*" telnet glibc"*" glibc-static.i686 freetype.i686 fontconfig.i686 libpng.i686 libXrender.i686 strace "fftw*" libpng "freetype*" xpdf "xemacs*" tkcvs xterm mutt "*g77*" joe "libXmu*" glibc-devel.i686 libX11-devel.i686 libXpm-devel.i686 libXft-devel.i686 mysql-devel.i686 dcap-devel dcap-devel.i686 gsl-devel gsl-devel.i686 pcre-devel pcre-devel.i686 fontconfig-devel.i686 freetype-devel.i686 libpng-devel.i686 libjpeg-devel.i686 libgfortran.i686 libxml2-devel.i686 h5py

2) run build.sh again

///////////////////////////////////////////////////
build.sh:
///////////////////////////////////////////////////


#!/bin/sh
#

# Usage: /usr/bin/time ../build.sh &>build.log #

export ROOTSYS=$PWD
echo ROOTSYS=$ROOTSYS

OPTCERN="--enable-cern --with-cern-libdir=/triumfcs/linux/cern/i386_redhat90/200 3/lib"
#OPTDCAP32="--enable-dcache --with-dcap-incdir=/triumfcs/linux/dcache-client/dca che_1.7.0-39_i386/dcap/include --with-dcap-libdir=/triumfcs/linux/dcache-client/ dcache_1.7.0-39_i386/dcap/lib"
#OPTDCAP64="--enable-dcache --with-dcap-incdir=/triumfcs/linux/dcache-client/dca che_1.7.0-39_x86_64/dcap/include --with-dcap-libdir=/triumfcs/linux/dcache-clien t/dcache_1.7.0-39_x86_64/dcap/lib"
OPT32="$OPTCERN $OPTDCAP32"
OPT64="$OPTDCAP64"
case `uname -m` in
x86_64)

    OPT=$OPT64
    ;;
*)

    OPT="linux $OPT32"
    ;;
esac
CONFIGURE="./configure $OPT --enable-xml --enable-roofit --enable-minuit2 --enab le-mysql --enable-pgsql --enable-rpath --enable-xrootd" echo $CONFIGURE
$CONFIGURE
make clean
make distclean

find . -name '*.a' -exec /bin/rm -vf {} \;
find . -name '*.so' -exec /bin/rm -vf {} \;
find . -name '*.so.*' -exec /bin/rm -vf {} \;
make distclean-xrootd
make all-xrootd
make -j3      OPTFLAGS="-O2 -g"
make          OPTFLAGS="-O2 -g"
make static   OPTFLAGS="-O2 -g"

#make cintdlls OPTFLAGS="-O2 -g"
make install OPTFLAGS="-O2 -g"
#make redhat OPTFLAGS="-O2 -g"

#end

>
> Our system uses the module environment(http://modules.sourceforge.net/)
> to give the users the possibility to select between different versions
> of software (eg. gcc) and libraries. There are 32bit and 64 bit versions
> installed in the system.
> This works for most of the software, but not for example the
> libungif.so, which is installed in /usr/lib (64bit version). But if I
> select the 32bit Version installed via module environment, the ROOT
> configure script still uses the version from /usr/lib.
> Is there a way to work around such a problem?
>
> Regards,
>
> J??rn W??stenfeld
>

-- 
Konstantin Olchanski
Data Acquisition Systems: The Bytes Must Flow!
Email: olchansk-at-triumf-dot-ca
Snail mail: 4004 Wesbrook Mall, TRIUMF, Vancouver, B.C., V6T 2A3, Canada
Received on Wed Jun 06 2012 - 20:37:13 CEST

This archive was generated by hypermail 2.2.0 : Wed Jun 06 2012 - 23:50:01 CEST