home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!mcsun!news.funet.fi!hydra!klaava!klaava!liljeber
- From: liljeber@klaava.Helsinki.FI (Mika Pekka Liljeberg)
- Newsgroups: comp.os.linux
- Subject: Re: WANT GCC? FORGET FAQ.GCC AND README?? lets end this, plz!
- Message-ID: <LILJEBER.92Sep5100751@klaava.Helsinki.FI>
- Date: 5 Sep 92 08:07:51 GMT
- References: <1992Sep4.225554.2416@novell.com> <1992Sep4.102532.4493@fys.ruu.nl>
- <186a86INNcsb@usenet.INS.CWRU.Edu> <1880h6INNfoh@usenet.INS.CWRU.Edu>
- <188sooINNc6f@usenet.INS.CWRU.Edu>
- Sender: liljeber@klaava.Helsinki.FI (Mika Pekka Liljeberg)
- Organization: Department of Computer Science, University of Helsinki, Finland
- Lines: 527
- In-Reply-To: mal11@po.CWRU.Edu's message of 4 Sep 92 23: 50:48 GMT
-
- In article <188sooINNc6f@usenet.INS.CWRU.Edu> mal11@po.CWRU.Edu (Matthew A. Lewis) wrote:
-
- > again....my apologies to anyone I offended. i guess I was a little too
- > excited. BUT LINUX IS WORTH GETTING EXCITED ABOUT. thanx to all the
- > testers, ftp admins, and linus himself.
- > later......and any help would be appreciated......I'm still stuck with gcc
-
- Sigh. Ok, here's a modified install script I used. I needed to modify it,
- because I installed gcc from a DOS partition, where the filename conflict
- was a real problem. Just copy all the gcc .tar.Z files into a single directory
- along with this install script (use any names you like), configure the file
- names at the start of the script and run it. If you still can't get it to work,
- please don't flame me. HLU's script was ok, and so is this one. If you get a
- mangled file system, your problem is probably somewhere else. Any one of the
- utilities used in the script could be broken.
-
- > --
- > MaThiEu a. LeWis "There is no middle ground/Or that's how it seems/For
- > Thieves Like Us us to walk or to take/Instead we tumble down/Either
- > mal11@po.cwru.edu side left or right/To love or to hate."
- > -A Strange Kind of Love
-
- Mika
-
- ----- install.2x --------------------------------------------------------------
- #!/bin/sh
- # installation of gcc 2.xxx
-
- # Configure these filenames to suit you
- MISCFILE=222dmisc.tz
- LIBFILE=222dlib.tz
- DBFILE=222ddb.tz
- KERNELINC=097p1inc.tz
- BINUTILS=binutils.tz
-
- # do something to kernel souce
- kernelstuff ()
- {
- workdir=$1
- srcdir=$2
-
- # we may have something in there.
-
- for d in asm linux; do
- if [ -d /usr/include/${d} ]; then
- for f in /usr/include/${d}/*.h; do
- if [ -f $f ]; then
- mv $f ${srcdir}/include/$d
- fi
- done
- /bin/rm -rf /usr/include/${d}
- fi
- done
- }
-
- # install jump table
- jumptable ()
- {
- DIR=$1
- VER=$2
- REL=$3
- M=$4
-
- mv $DIR/libc.so.${REL} /lib
- mv $DIR/lib${M}.so.${REL} /lib/libm.so.${REL}
-
- ln -s -f /lib/libc.so.${REL} /lib/libc.so.${VER}
- ln -s -f /lib/libm.so.${REL} /lib/libm.so.${VER}
- }
-
- checkreturn ()
- {
- if [ $? != 0 ]
- then
- echo Failed to $1.
- exit 1
- fi
- }
-
- fixfiles ()
- {
- VERBOSE=$1
- VER=$2
- BINS=$3
-
- if [ $VERBOSE = yes ]; then set -x; fi
-
- cd /usr/bin
- chown bin:bin $BINS
- chmod 755 $BINS
-
- chown -R bin:bin /usr/include /usr/g++-include /lib /usr/lib/gcc-lib
- chmod -R 755 /lib /usr/lib/gcc-lib
-
- # this is for the header files
- chmod 755 /usr/include /usr/g++-include
- # Yes, 'find' would be cleaner and faster, but it is not on rootdisk
- cd /usr/include
- chmod 775 *
- chmod 664 *.h
- chmod 664 */*
- cd /usr/g++-include
- chmod 775 *
- chmod 664 *.h
- chmod 664 */*
-
- chmod 664 /usr/lib/gcc-lib/i386-linux/${VER}/*.?
- chmod 664 /usr/lib/gcc-lib/i386-linux/${VER}/shared/*.?
- }
-
- # check if it is a directory.
- checkdir ()
- {
- if [ x${1}x = xx ]
- then
- echo No directory to check.
- return 1
- fi
-
- for f in $*
- do
- if [ ! -d $f ]; then
- echo There is no such a directory, $f.
- echo Please make sure there is one and it has right stuffs in it.
- exit 1
- fi
- done
- return 0
- }
-
- checkbinfile ()
- {
- for f in $*
- do
- if [ ! -f /bin/$f -a ! -f /usr/bin/$f ]; then
- echo There is no such a file, $f.
- return 1
- fi
- done
- return 0
- }
-
- checkfile ()
- {
- if [ x${1}x = xx ]
- then
- echo No file to check.
- return 1
- fi
-
- for f in $*
- do
- if [ ! -f $f ]; then
- echo There is no such a file, $f.
- echo Please make sure there is one and it has right stuffs in it.
- exit 1
- fi
- done
- return 0
- }
-
- checkroot ()
- {
- uid=`id | sed -e 's/uid=\([0-9]*\)/\1/' -e 's/[^a-z0-9=].*//'`
- if [ $? != 0 ]
- then
- echo Fail to get \"root\" id. You may need a working \"id\" and
- echo \"sed\".
- exit 1
- fi
-
- if [ x${uid}x != x0x ]
- then
- echo You have to be root to run this script.
- exit 1
- fi
- }
-
- usage ()
- {
- echo Usage: sh $1 [-v] version {kernel src dir}
- echo Note: \"sh\" must be zsh or bash.
- exit 1
- }
-
- checkroot
-
- VERBOSE=no
-
- if [ $# != 2 -a $# != 3 ]
- then
- usage $0
- fi
-
- case $1 in
- -v)
- shift
- set -x
- VERBOSE=yes
- ;;
- esac
-
- if [ $# != 2 ]
- then
- usage $0
- fi
-
- VERSION=$1
- echo Installing gcc ${VERSION} ......
-
- # kernel src dir
- KERNELSRCDIR=$2
-
- #ln is not on rootdisk, let's use cp
- #LN="cp -s"
- #HDLN="cp -l"
- LN="ln -s"
- HDLN="ln"
- MV="mv -f"
- RM=/bin/rm
- PREFIX=/usr
- #LN="echo ln"
- #MV="echo mv"
- #PREFIX=/local
- LIBDIR=${PREFIX}/lib/gcc-lib/i386-linux/${VERSION}
- SHAREDLIBDIR=${LIBDIR}/shared
- JUMPLIBDIR=${LIBDIR}/jump
- SHIMAGEDIR=/lib
-
- # change it by hand
- JUMP_VERSION=2
- JUMP_RELEASE=${JUMP_VERSION}.2
-
- #create directories first
-
- if [ -f $SHIMAGEDIR ]
- then
- echo $SHIMAGEDIR should be directory. Remove it first!
- exit 1
- fi
-
- if [ ! -d $SHIMAGEDIR ]
- then
- mkdir $SHIMAGEDIR
- if [ $? != 0 ]
- then
- echo Unable to create directory: $SHIMAGEDIR. You may have to create
- echo some paths in $SHIMAGEDIR first by hand.
- exit 1
- fi
- fi
-
- echo gcc ${VERSION} will only work with a 387 or the kernel above 0.95.
- # ask if there is a 387.
- echo "Do you have a 387? [y/n] "
- read MATH
- if [ x${MATH}x = "xyx" ]
- then
- MATH=hard
- else
- MATH=soft
- fi
-
- echo Check if we get the files.
- #WORKDIR=`echo ${VERSION}*`
- WORKDIR=yeah
- if [ "${WORKDIR}" = "${VERSION}""*" ]
- then
- echo No files to install. You need at least
- echo "1. ${MISCFILE}"
- echo "2. ${DBFILE}"
- echo "3. ${LIBFILE}"
- if [ ${VERSION} = 2.2.2d ]; then
- echo "4. ${BINUTILS}"
- else
- echo "4. ${BINUTILS} (optional)"
- fi
- echo "5. ${KERNELINC} (header files also used by kernel source)"
- exit 1
- fi
-
- #KERNELINC=`echo *inc.ta*`
- if [ ! -f ${KERNELINC} ]
- then
- echo You need ${KERNELINC} for the whole set of the header files
- echo to use gcc ${VERSION}.
- exit 1
- fi
-
- echo Check ${DBFILE} and ${MISCFILE}
- checkfile ${DBFILE} ${MISCFILE}
-
- # check those
- BINS="as86 ld86 ar as gprof ld nm objdump ranlib size strip"
- echo Check binaries.
- checkbinfile "${BINS}"
- if [ $? != 0 -o ${VERSION} = 2.2.2d ]
- then
- checkfile ${BINUTILS}
- fi
-
- #LIBFILE=
-
- # optional in gcc 2.2.2d. false.
- if [ ${VERSION} != xxxxxxx ]
- then
- checkfile ${LIBFILE}
- else
- # maybe it has gcc 2.2.2 file.
- if [ -f 2.2.2lib.tar.Z ]; then
- BBFILE=2.2.2lib.tar.Z
- else
- OLDLIBDIR=/usr/lib/gcc-lib/i386-linux/2.2.2
- # it neens gcc 2.2.2d file.
- if [ ! -d ${OLDLIBIR} ]; then
- checkfile ${VERSION}lib.tar.Z
- LIBFILE=${VERSION}lib.tar.Z
- else
- # can I use gcc 2.2.2
- if [ ! -f ${OLDLIBDIR}/cc1 -o ! -f ${OLDLIBDIR}/cc1plus ]
- then
- checkfile ${VERSION}lib.tar.Z
- LIBFILE=${VERSION}lib.tar.Z
- fi
- fi
- fi
- fi
-
- # double check the kernel sources
- checkdir $KERNELSRCDIR
- checkdir $KERNELSRCDIR/include/linux $KERNELSRCDIR/include/asm
-
- WORKDIR=`pwd`
-
- cd /usr
-
- # optional
- if [ -f ${WORKDIR}/${BINUTILS} ]
- then
- echo installing ${BINUTILS}
- # tar xvvofz ${WORKDIR}/binutils.tar.Z
- # zcat ${WORKDIR}/binutils.tar.Z | tar xvvof -
- compress -d < ${WORKDIR}/${BINUTILS} | tar xvvof -
- fi
-
- # optional
- if [ x${LIBFILE}x != xx ]
- then
- echo installing ${LIBFILE}
- # tar xvvofz ${WORKDIR}/${LIBFILE}
- # zcat ${WORKDIR}/${LIBFILE} | tar xvvof -
- compress -d < ${WORKDIR}/${LIBFILE} | tar xvvof -
- fi
-
- echo installing ${DBFILE}.
- #tar xvvofz ${WORKDIR}/${VERSION}db.tar.Z
- #zcat ${WORKDIR}/${VERSION}db.tar.Z | tar xvvof -
- compress -d < ${WORKDIR}/${DBFILE} | tar xvvof -
-
- echo installing ${MISCFILE}.
- #tar xvvofz ${WORKDIR}/${VERSION}misc.tar.Z
- #zcat ${WORKDIR}/${VERSION}misc.tar.Z | tar xvvof -
- compress -d < ${WORKDIR}/${MISCFILE} | tar xvvof -
-
- $RM -rf /usr/include/const.h /usr/include/asm /usr/include/linux
-
- echo installing ${KERNELINC}
- #tar xvvofz ${WORKDIR}/${KERNELINC}
- #zcat ${WORKDIR}/${KERNELINC} | tar xvvof -
- compress -d < ${WORKDIR}/${KERNELINC} | tar xvvof -
-
- $RM -rf /usr/include/sys/asy.h
-
- if [ ${VERSION} = xxxxx ]
- then
- if [ ! -f ${LIBDIR}/cc1 -o ! -f ${LIBDIR}/cc1plus ]
- then
- if [ x${OLDLIBDIR}x = xx ]
- then
- echo While installing gcc 2.2.2d, you don't have cc1/cc1plus
- echo and you don't have gcc 2.2.2. This installation script is
- echo wrong. Please use
- echo " sh $0 -v verson [kernel src dir]"
- echo " Note: \"sh\" must be zsh or bash."
- echo to see what is wrong and report it to hlu@eecs.wsu.edu.
- echo Thanks.
- exit 1
- else
- $HDLN ${OLDLIBDIR}/cc1 ${OLDLIBDIR}/cc1plus ${LIBDIR}
- fi
- fi
- fi
-
- #checkfile $LIBDIR/lib$MATH.a
- checkfile $LIBDIR/lib$MATH.a \
- $LIBDIR/cpp $JUMPLIBDIR/libc.so.${JUMP_RELEASE} \
- $JUMPLIBDIR/lib${MATH}.so.${JUMP_RELEASE}
-
- # not used
- # $SHAREDLIBDIR/libc.${VERSION}
- # $SHAREDLIBDIR/lib${MATH}.${VERSION}
-
- if [ -f $SHIMAGEDIR/libc.${VERSION} -o -f $SHIMAGEDIR/libm.${VERSION} ]
- then
- echo There is a libc.${VERSION} or libm.${VERSION} in $SHIMAGEDIR.
- echo Do you want to deleted them? [y/n]
- read answer
- if [ x${answer}x = "xyx" ]
- then
- $RM -f $SHIMAGEDIR/libc.${VERSION} $SHIMAGEDIR/libm.${VERSION}
- else
- echo Give up.
- exit 1
- fi
- fi
-
- if [ -f $SHIMAGEDIR/libc.so.${JUMP_RELEASE} -o -f $SHIMAGEDIR/libm.so.${JUMP_RELEASE} ]
- then
- echo There is a libc.so.${JUMP_RELEASE} or libm.so.${JUMP_RELEASE} in $SHIMAGEDIR.
- echo Do you want to deleted them? [y/n]
- read answer
- if [ x${answer}x = "xyx" ]; then
- $RM -f $SHIMAGEDIR/libc.so.${JUMP_RELEASE} $SHIMAGEDIR/libm.so.${JUMP_RELEASE}
- else
- echo Give up.
- exit 1
- fi
- fi
-
- #echo moving the shared image.
- #$MV $SHAREDLIBDIR/libc.${VERSION} $SHIMAGEDIR
- #$MV $SHAREDLIBDIR/lib${MATH}.${VERSION} $SHIMAGEDIR/libm.${VERSION}
-
- $RM -f $LIBDIR/libm.a
- $HDLN $LIBDIR/lib$MATH.a $LIBDIR/libm.a
- checkreturn "$HDLN $LIBDIR/lib$MATH.a $LIBDIR/libm.a"
-
- #$HDLN $SHAREDLIBDIR/lib$MATH.a $SHAREDLIBDIR/libm.a
- #checkreturn "$HDLN $SHAREDLIBDIR/lib$MATH.a $SHAREDLIBDIR/libm.a"
-
- echo install jump table.
- jumptable $JUMPLIBDIR $JUMP_VERSION $JUMP_RELEASE $MATH
-
- $RM -rf /usr/lib/cpp /lib/cpp
-
- $LN $LIBDIR/cpp /usr/lib/cpp
- checkreturn "$LN $LIBDIR/cpp /usr/lib/cpp"
- $LN $LIBDIR/cpp /lib/cpp
- checkreturn "$LN $LIBDIR/cpp /lib/cpp"
-
- if [ -f /usr/include/stddef.h -o -f /usr/include/stdarg.h ]
- then
- echo The version-dependent stddef.h and stdarg.h should not be in
- echo /usr/include. Please take a look at
- echo " /usr/lib/gcc-lib/i386-linux/${VERSION}/include"
- exit 1
- fi
-
- if [ ! -f /usr/include/time.h ]
- then
- echo You have to install ${KERNELINC} first!
- exit 1
- fi
-
- echo "Do you have kernel source on line? [y/n] "
- read MATH
- if [ $MATH = "n" ]
- then
- echo Oops. gcc ${VERSION} needs at least the header files from
- echo the kernel source, i.e. linux/include/linux.
- exit 1
- fi
-
- echo Ignore the error message.
-
- $RM -rf ${KERNELSRCDIR}/include/*.h ${KERNELSRCDIR}/include/sys
- if [ -f ${KERNELSRCDIR}/include/a.out.h ]
- then
- echo 'Fail to clean ${KERNELSRCDIR}/include/*.h and'
- echo '${KERNELSRCDIR}/include/sys.'
- exit 1
- fi
-
- checkdir ${KERNELSRCDIR}/include/asm ${KERNELSRCDIR}/include/linux
-
- kernelstuff $WORKDIR $KERNELSRCDIR
-
- $LN ${KERNELSRCDIR}/include/asm /usr/include
- if [ $? != 0 ]
- then
- echo Fail to make a link from ${KERNELSRCDIR}/include/asm to
- echo /usr/include/asm.
- exit 1
- fi
-
- $LN ${KERNELSRCDIR}/include/linux /usr/include
- if [ $? != 0 ]
- then
- echo Fail to make a link from ${KERNELSRCDIR}/include/linux to
- echo /usr/include/linux.
- exit 1
- fi
-
- echo No more error messages.
-
- echo Fixing the files.
- fixfiles ${VERBOSE} ${VERSION} "${BINS}"
-
- # for future use
- # gcc -V 2.xxx will read this file.
- cd $LIBDIR
- chmod 755 /usr/bin/gcc
- /usr/bin/gcc -dumpspecs > specs
-
- if [ $? != 0 ]
- then
- echo Error during the installation of gcc ${VERSION}
- exit 1
- fi
-
- echo Done! gcc ${VERSION} has been installed.
- echo Please get rid of all the \"-nostdinc -I\" from Makefiles in
- echo kernel source and then do a fresh "make dep".
- --
- Mika Liljeberg Email: liljeber@kruuna.Helsinki.FI
- Helsinki University Mika.Liljeberg@Helsinki.FI
- Dept. of Computer Science
-