La manière facile
Si vous êtes un développeur classique, vous pouvez installer la méthode simple, en utilisant les instructions sur http://gcc.gnu.org/wiki/InstallingGCC ou votre gestionnaire de packages système tels que:
apt install gcc # for Debian, Ubuntu, etc.
yum install gcc # for RedHat, CentOS, etc.
brew install gcc # for Mac OS X
À la dure
GCC dit que la réponse ici est «à la dure» car il construit tout morceau par morceau et n'utilise pas de bibliothèques partagées.
Infrastructure GCC
Obtenez l'infrastructure GCC:
ftp://gcc.gnu.org/pub/gcc/infrastructure/
Placez les téléchargements dans un répertoire temporaire (vous pouvez utiliser le répertoire de votre choix).
/opt/downloads
Construisez l'infrastructure dans un répertoire temporaire différent du répertoire de téléchargements ou de ses sous-répertoires:
/tmp/gcc
Configurez l'infrastructure à l'aide de bibliothèques statiques comme ceci:
./configure --disable-shared --enable-static --prefix=/tmp/gcc
L'indicateur --disable-shared peut valoir la peine d'être examiné de plus près en fonction de vos besoins. J'utilise --disable-shared parce que je ne construis que du code statique et je veux m'assurer de ne pas créer de code partagé. Mon besoin est de déplacer facilement le GCC résultant autour de mes lecteurs, donc je veux tout le code statique, et je ne veux pas de code partagé. Si vous préférez le code partagé, omettez l'indicateur --disable-shared.
Versions
Lorsque vous exécutez l'une des commandes de cette réponse, assurez-vous de mettre à jour les commandes pour utiliser le numéro de version actuel de GCC qui correspond à vos besoins. Les commandes de cette réponse concernent GCC 4.6.2.
Notez que la documentation GCC dit: "Bien que toute version suffisamment nouvelle des outils requis fonctionne généralement, les exigences de la bibliothèque sont généralement plus strictes. Les versions plus récentes peuvent fonctionner dans certains cas, mais il est plus sûr d'utiliser les versions exactes documentées."
GMP
GMP est la bibliothèque d'arithmétique à précision multiple GNU.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
bunzip2 gmp-4.3.2.tar.bz2
tar xvf gmp-4.3.2.tar
cd gmp-4.3.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
MPFR
MPFR est la bibliothèque d'arrondis à virgule flottante à précision multiple GNU. Cela dépend de GMP.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
bunzip2 mpfr-2.4.2.tar.bz2
tar xvf mpfr-2.4.2.tar
cd mpfr-2.4.2
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc
make && make check && make install
MPC
MPC est la bibliothèque GNU C à précision multiple. Cela dépend de GMP et MPFR.
wget ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
tar zxvf mpc-0.8.1.tar.gz
cd mpc-0.8.1
./configure --disable-shared --enable-static --prefix=/tmp/gcc --with-gmp=/tmp/gcc --with-mpfr=/tmp/gcc
make && make check && make install
ELFE
ELF signifie Executable and Linkable Format. Cette bibliothèque fournit une taille et une prise en charge endian indépendantes de l'architecture.
wget http://www.mr511.de/software/libelf-0.8.13.tar.gz
tar zxvf libelf-0.8.13.tar.gz
cd libelf-0.8.13
./configure --disable-shared --enable-static --prefix=/tmp/gcc
make && make check && make install
GCC
GCC est la collection de compilateurs GNU. Cela dépend de GMP, MPFR, MPC et ELF.
wget http://www.netgull.com/gcc/releases/gcc-4.6.2/gcc-4.6.2.tar.gz
tar zxvf gcc-4.6.2.tar.gz
Construisez gcc dans un répertoire de travail sur le même point de montage. (Le construire dans / tmp déclencherait des problèmes d'hôte de compilation croisée)
mkdir -p /opt/downloads/gcc-4.6.2-scratch
cd /opt/downloads/gcc-4.6.2-scratch
La commande configure et ses indicateurs doivent être tous sur une seule ligne de commande (cet article les montre sur des lignes séparées juste à cause de la largeur de la page Web).
Remarque: Nous utilisons le chemin complet pour configurer et ne définissons pas les variables d'environnement du chemin de bibliothèque. Nous choisissons de désactiver le bootstrap et de désactiver les bibliothèques partagées parce que nous ne les voulons pas (les utilisateurs typiques peuvent vouloir les deux), et d'utiliser les threads posix et les indicateurs qui sont par défaut parce que nous les voulons (les utilisateurs typiques peuvent vouloir utiliser d'autres threads ou sauter drapeaux par défaut). YMMV et lisez les drapeaux ici
/opt/downloads/gcc-4.6.2/configure
--disable-shared
--disable-bootstrap
--disable-libstdcxx-pch
--enable-languages=all
--enable-libgomp
--enable-lto
--enable-threads=posix
--enable-tls
--with-gmp=/tmp/gcc
--with-mpfr=/tmp/gcc
--with-mpc=/tmp/gcc
--with-libelf=/tmp/gcc
--with-fpmath=sse
make && make install
Cette page est idéale pour les informations d'installation de GCC, comment le construire, divers indicateurs, et plus encore:
http://www.acsu.buffalo.edu/~charngda/cc_build.html
Mises à jour
Les bibliothèques ppl peuvent être utilisées pour des optimisations de mémoire: voir bugseng.com/products/ppl/Download (Merci Paul dans les commentaires)
Vous pouvez exécuter ./contrib/download_prerequisites à partir du répertoire source gcc. (Merci à N7P sur reddit)