主题:【原创】随便聊聊算法、应用数学和数学 -- hokmen
俺在德国的Uni. Tübingen. 当时这个mmix搞得所有同学当时是怨声载道,苦不堪言,图书馆一共就两本参考书快被抢疯了。网上有关资料相对很少,中文的就更不好找了。国内似乎清华也是学这个。
给您贴一个当时教授给的自动安装脚本。
# Wie man einen MMIX-Cross-Compiler hochzieht
# (OK, 04.03.2006)
# Hier wird alles hin installiert! Bitte anpassen
export MMIXHOME=/gpp
if test "$MMIXHOME" = "aendern" ; then
echo "Bitte Installationspfad anpassen!"
exit
fi
# Ueberpruefen ob g++, cweb und wget im Pfad sind
if test ! `which g++`; then echo "g++ ist nicht im Pfad!"; exit; fi
if test ! `which cweave`; then echo "cweave ist nicht im Pfad!"; exit; fi
if test ! `which wget`; then echo "wget ist nicht im Pfad!"; exit; fi
# Zutaten:
# - gcc
# - binutils
# - mmix
# - newlib
GCC=gcc-4.0.2.tar.bz2
BINUTILS=binutils-2.16.1.tar.gz
MMIX=mmix-20050922.tar.gz
NEWLIB=newlib-1.14.0.tar.gz
# Man lege ein Verzeichnis an, das den MMIX-Kram aufnehmen soll:
#
export MAKE="make"
export PATH=$MMIXHOME/bin:$PATH
mkdir -p $MMIXHOME
echo "Preparing to install MMIX tools in $MMIXHOME"
mkdir -p $MMIXHOME/bin
mkdir -p $MMIXHOME/src
cd $MMIXHOME/src
# Zuerst besorgen wir alle Pakete per wget:
#
echo ""
echo " --- Download --- "
echo "Falls das Skript beim Download abbricht, mu wahrscheinlich ein Proxy genutzt werden."
echo "Setzen sie dazu die Umgebungsvaraiblen 'http_proxy' und 'ftp_proxy'!"
echo ""
echo "Downloading $MMIX..."
#wget -q http://www-cs-faculty.stanford.edu/~knuth/programs/$MMIX || exit
echo "Downloading $BINUTILS..."
#wget -q http://ftp.gnu.org/gnu/binutils/$BINUTILS || exit
echo "Downloading $GCC..."
#wget -q http://ftp.gnu.org/gnu/gcc/gcc-4.0.2/$GCC || exit
echo "Downloading $NEWLIB..."
#wget -q ftp://sources.redhat.com/pub/newlib/$NEWLIB || exit
# Dann bauen wir die MMIX-Tools.
# Dummerweise ist das TAR-Archiv etwas ungeschickt verpackt. Daher zuerst
# ein Verzeichnis anlegen und dort auspacken, sonst hat man den ganzen Klump
# in $MMIXHOME/src liegen.
echo "Unpacking MMIX ware..."
mkdir mmix-ware
cd mmix-ware
tar zxf ../$MMIX || exit
# Dann bauen und installieren wir alle notwendigen Werkzeuge und kopieren
# sie an die richtige Stelle:
# (CWEB muss dafuer installiert und im Pfad sein!)
echo "Building MMIX ware..."
$MAKE all || exit
cp mmixal mmix mmotype mmmix $MMIXHOME/bin
# Dann bauen wir die binutils und einen Cross-GCC:
# Man packe GCC und binutils aus und lege passende
# build-Verzeichnisse jeweils daneben:
cd $MMIXHOME/src
echo "Unpacking GCC..."
tar jxf $GCC || exit
echo "Unpacking binutils..."
tar zxf $BINUTILS || exit
mkdir build-gcc build-binutils
# Man konfiguriere, baue und installiere die binutils fuer mmix:
echo "Building binutils..."
cd build-binutils
../binutils-*/configure --target=mmix --prefix=$MMIXHOME --disable-nls || exit
$MAKE all install || exit
# Man tue das selbe fuer den gcc:
echo "Building binutils..."
cd ../build-gcc
../gcc-*/configure --target=mmix --prefix=$MMIXHOME --disable-nls --enable-languages=c,c++ || exit
$MAKE all-gcc install-gcc || exit
# Dann brauchen wir noch die newlib.
# Die packen wir aus, konfigurieren und bauen sie:
cd $MMIXHOME/src
echo "Unpacking newlib..."
tar zxf $NEWLIB || exit
mkdir build-newlib
echo "Building newlib..."
cd build-newlib
../newlib*/configure --target=mmix --prefix=$MMIXHOME || exit
$MAKE all install || exit
# Fertig.
echo ""
echo ""
echo "Ready."
- 相关回复 上下关系8
🙂【原创】随便聊聊算法、应用数学和数学 27 hokmen 字2711 2008-10-21 16:53:15