/ gcc

GCC per toast im Uberspace installieren

Auch mir reicht der standardmäßig auf Uberspace vorhandene gcc nicht mehr aus. Aber statt mich wie dieser Autor darauf zu beschränken, das Kompilat nur einfach in das toast-Verzeichnis zu installieren, wollte ich toast die ganze Arbeit machen lassen.

Der Übersichtlichkeit halber habe ich meine Kommandos in mehrere Schritte aufgeteilt, die man aber genau so gut zu einem Aufruf von toast arm mit den passenden Optionen zusammenfassen kann.

Ich hole zunächst mal die Datei. toast findet die höheren gcc-Versionen aus irgendeinem Grund nicht, daher ist die Angabe der kompletten URL notwendig. Immerhin kann toast daraus alleine schlussfolgern, dass wir hier gerne gcc in der Version 4.8.4 hätten:

toast get ftp://ftp.gwdg.de/pub/misc/gcc/releases/gcc-4.8.4/gcc-4.8.4.tar.bz2

Zum Bauen müssen wir den von toast verwendeten Compileraufruf entsprechend umbiegen. Standardmäßig steht der auf ./configure --prefix=<toast-Verzeichnis>/armed && make, was für die meisten per autoconf / automake verwalteten Pakete passt. gcc ist aber noch von einigen separat verwalteten Paketen abhängig. Netterweise liefern uns die Compilerbauer das download_prerequisites Skript mit, das diese automatisch in der richtigen Version herunterlädt. Allerdings muss das vor dem configure-Schritt geschehen, und dann müssen configure auch noch die richtigen Optionen mitgegeben werden:

toast build gcc --compilecmd="./contrib/download_prerequisites && ./configure --prefix=/home/${USER}/.toast/armed --enable-languages=c,c++ --disable-multilib && make"

Das Gute ist: Toast räumt selbständig auf, nur das Quellpaket bleibt liegen. Wer will, kann das auch noch per toast purge gcc entfernen.

Anschließend muss das eben gebaute Paket noch aktiviert werden:

toast arm gcc

Das war's auch schon. gcc --version meldet jetzt wie gewünscht

gcc --version
gcc (GCC) 4.8.4
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying
conditions.  There is NO warranty; not even for
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.