⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 getandpatch-newlib.sh

📁 在linux下建立交叉编译环境的she
💻 SH
字号:
#!/bin/sh# Download and unpack gnu toolchain source tarballs, and apply any local patches.# Local patches are found in subdirectories of patches/ with the same name as the tarball but without .tar.gz# Copyright 2003 Ixia Communications# Licensed under the GPL# 17-Sep-03: Modified for Newlib by Nicolas Moreau ngbmoreau@yahoo.com.auset -xeabort() {	echo $@	exec /bin/false}# Meant to be invoked from another shell script.# Usage: eight environment variables must be set, namely:test -z "${BINUTILS_DIR}"     && abort "Please set BINUTILS_DIR to the bare filename of the binutils tarball or directory"test -z "${BUILD_DIR}"        && abort "Please set BUILD_DIR to the directory where the tools are to be built"test -z "${GCC_DIR}"          && abort "Please set GCC_DIR to the bare filename of the gcc tarball or directory"test -z "${NEWLIB_DIR}"       && abort "Please set NEWLIB_DIR to the bare filename of the newlib tarball or directory"test -z "${TARBALLS_DIR}"     && abort "Please set TARBALLS_DIR to the directory to download tarballs to."test -z "${TARGET_CFLAGS}"    && abort "Please set TARGET_CFLAGS to any compiler flags needed when building glibc (-O recommended)"test -z "${TARGET}"           && abort "Please set TARGET to the Gnu target identifier (e.g. pentium-linux)"# Download, unpack, and patch the given tarball.# Assumes that the tarball unpacks to a name guessable from its url,# and that patches already exist locally in a directory named after the tarball.getUnpackAndPatch() {	ARCHIVE_NAME=`echo $1 | sed 's,.*/,,;'`        BASENAME=`echo $ARCHIVE_NAME | sed 's,\.tar\.gz$,,;s,\.tar\.bz2$,,;'`	ZIP_METHOD=`echo $ARCHIVE_NAME | sed 's,.*\.tar\.,,;'`	cd $TARBALLS_DIR	# Download if not present	# FIXME: supposedly red hat 9's wget can't fetch from gnu.org.  passive needed?	test -f $ARCHIVE_NAME || wget -c $1	test -f $ARCHIVE_NAME || { echo "file $ARCHIVE_NAME not found"; return 1 ; }	cd $BUILD_DIR	# unpack unconditionally	rm -rf $BASENAME	if test $ZIP_METHOD = "gz" ; then	    if ! tar -xzvf $TARBALLS_DIR/$ARCHIVE_NAME; then	        abort "Corrupt file $ARCHIVE_NAME"	    fi	elif test $ZIP_METHOD = "bz2"; then	    if ! tar -xjvf $TARBALLS_DIR/$ARCHIVE_NAME; then		abort "Corrupt file $ARCHIVE_NAME"	    fi	else abort "Bad compress format $ZIP_METHOD for tarball"	fi	# Apply any patches for this component	# -f is required for patches that delete files, like	# patches/glibc-2.2.5/hhl-powerpc-fpu.patch,	# else patch will think the patch is reversed :-(	cd $BASENAME	for p in $TOP_DIR/patches/$BASENAME/*.patch; do	    if test -f $p; then	        patch -p1 -f < $p	    fi	done	cd $TOP_DIR}# Remember where source is.TOP_DIR=${TOP_DIR-`pwd`}mkdir -p $BUILD_DIR $TARBALLS_DIR# Download, unpack, and patch all the needed source tarballs,getUnpackAndPatch $BINUTILS_URL/$BINUTILS_DIR.tar.bz2 || getUnpackAndPatch $BINUTILS_URL/$BINUTILS_DIR.tar.gz# fixme: if it looks like a snapshot (e.g. 3.3-20030721), we should get it from ftp://gcc.gnu.org/pub/gcc/snapshotscase $GCC_DIR in   gcc-3.4-*)      dir=`echo $GCC_DIR | sed 's/gcc-//'`      getUnpackAndPatch ftp://gcc.gnu.org/pub/gcc/snapshots/$dir/$GCC_DIR.tar.bz2 ;;   *)      getUnpackAndPatch ftp://ftp.gnu.org/pub/gnu/gcc/$GCC_DIR.tar.gz ;;esac#Get Newlib getUnpackAndPatch $NEWLIB_URL/$NEWLIB_DIR.tar.bz2 || getUnpackAndPatch $NEWLIB_URL/$NEWLIB_DIR.tar.gz# gcc's contrib/test_summary expects version stamp, normally created by contrib/update_gcctest -f $BUILD_DIR/$GCC_DIR/LAST_UPDATED || echo $GCC_DIR > $BUILD_DIR/$GCC_DIR/LAST_UPDATED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -