GCC-Ada-6.3.0

Introduction au compilateur GCC Ada

Ada est un langage de programmation moderne pour des applications à longue durée de vie — et pour des systèmes embarqués en particulier — où la fiabilité et efficacité sont essentielles. Il a un ensemble de fonctions techniques uniques qui font qu'il est très efficace pour une utilisation dans des projets importants, complexes et critiques en termes de sécurité.

Le compilateur et les outils associés de cette page sont connus sous le nom de technologie GNAT, développés par la compagnie Adacore, en utilisant le moteur de GCC. Comme certaines parties du compilateur Ada sont écrites en Ada, il y a une dépendance circulaire dans le compilateur Ada. Les instructions ci-dessous commencent par installer un compilateur binaire. Vous n'avez pas besoin de faire cela si vous avez déjà construit les outils GNAT.

Ce paquet est connu pour se construire correctement sur une plateforme LFS-8.0.

[Attention]

Attention

L'utilisation des instructions de cette page aura pour effet que les compilateurs et bibliothèques C et C++ seront réinstallés, écrasant celle de votre système. Cela peut causer des problèmes. Merci de lire la note et l'avertissement sur la page GCC-6.3.0.

[Note]

Note

Si vous souhaitez installer d'autres compilateurs dans la collection GCC , faîtes cela en premier, ou spécifiez ada dans le paramètre --enable-languages de configure. Si vous reconstruisez GCC sans activer ada après avoir lancé les instructions de cette page, le nouveau compilateur ne sera plus capable de compiler ADA.

Informations sur le paquet

Téléchargements supplémentaires

[Note]

Note

Vous aurez besoin d'installer GNAT temporairement pour satisfaire la dépendance circulaire. Vous pouvez pointer votre navigateur sur la page de téléchargement de AdaCore, choisir votre plateforme et 2015 (machines 64 bits) ou 2014 (machines 32 bits), puis sélectionner le fichier à télécharger. Autrement, des liens directs pour les versions de linux 64 bits et 32 bits sont donnés en-dessous.

Dépendances de GCC Ada

Recommandées

Notes utilisateur : http://wiki.linuxfromscratch.org/blfs/wiki/gcc-ada

Installation de the GNAT binary

Avant de déballer et aller dans le répertoire des sources de GCC, déballez l'archive GNAT et allez dans le répertoire de GNAT. Ensuite, installez le binaire GNAT en lançant la commande suivante en tant qu'utilisateur root :

make ins-all prefix=/opt/gnat

Le compilateur GNAT peut être appelé en exécutant le binaire gcc installé dans /opt/gnat/bin.

vous pouvez maintenant enlever le répertoire des sources de GNAT si vous le souhaitez.

Préparez la compilation de GCC en plaçant la version de GNAT de gcc au début de la variable PATH en utilisant les commandes suivantes :

PATH_HOLD=$PATH &&
export PATH=/opt/gnat/bin:$PATH_HOLD

L'inconvénient est que les exécutables GCC et Binutils sont pris dans le paquet GNAT qui est juste installé, mais les versions de ces exécutables sont dépassés comparés à ceux installés dans LFS. Ce n'est pas important pour les compilateurs GCC puisqu'ils se recompilent eux même pendant le processus de "bootstrap". D'un autre coté, les outils dépassés ld et as sont utilisés tout du long. Pour utiliser les outils LFS, tapez en tant qu'utilisateur root :

find /opt/gnat -name ld -exec mv -v {} {}.old \;
find /opt/gnat -name as -exec mv -v {} {}.old \;

Installation de GCC Ada

Installez GCC Ada en lançant les commandes suivantes :

case $(uname -m) in
  x86_64)
    sed -e '/m64=/s/lib64/lib/' \
        -i.orig gcc/config/i386/t-linux64
  ;;
esac

mkdir build &&
cd    build &&

../configure               \
    --prefix=/usr          \
    --disable-multilib     \
    --with-system-zlib     \
    --enable-languages=ada &&
make

si vous avez installé des paquets supplémentaires comme Valgrind et GDB, la partie GCC de la suite de tests lancera plus de tests que dans LFS. Certain d'entre eux seront signalé FAIL et d'autres XPASS (réussi alors que FAIL était attendu). Pour lancer les tests, tapez :

ulimit -s 32768 &&
make -k check

Les tests sont très longs, et les résultats peuvent être difficiles à trouver dans les logs, en particulier si vous avez utilisé des travaux parallèles avec make. Vous pouvez avoir un résumé des tests avec :

../contrib/test_summary

Maintenant, en tant qu'utilisateur root :

make install &&

mkdir -pv /usr/share/gdb/auto-load/usr/lib              &&
mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib &&

chown -v -R root:root \
    /usr/lib/gcc/*linux-gnu/6.3.0/include{,-fixed} \
    /usr/lib/gcc/*linux-gnu/6.3.0/ada{lib,include}

Vous pouvez maintenant supprimer l'installation de GNAT et faire d'autres nettoyages. Pour commencer, en tant qu'utilisateur root :

rm -rf /opt/gnat

ensuite, en tant que simple utilisateur :

export PATH=$PATH_HOLD &&
unset PATH_HOLD

Explication des commandes

mkdir build; cd build : La documentation de GCC recommande de construire le paquet dans un répertoire de construction dédié.

--disable-multilib : Ce paramètre assure que les fichiers sont créés pour l'architecture spécifique à votre ordinateur.

--with-system-zlib : utilise la version zlib au lieu de celle empaquetée. zlib est utilisé pour compresser et décompresser les langages intermédiaires de GCC dans les fichiers objets LTO (Link Time Optimization).

--enable-languages=ada : Indique au système de construction de construire les outils Ada et le compilateur. Il est inutile de reconstruire les compilateurs C et C++.

--with-default-libstdcxx-abi=gcc4-compatible : Utilisez ce paramètre si vous construisez les outils GNAT en utilisant une version de GCC inférieur à 5.1.0, et que vous ne voulez pas recompiler toutes les bibliothèques écrites en C++.

ulimit -s 32768 : Cette commande évite à plusieurs tests de tomber à court d'espace sur la pile.

make -k check : Cette commande lance la suite de tests sans stopper si quelques erreurs sont générées.

./contrib/test_summary : Cette commande produira un résumé des résultats de la suite de tests. Vous pouvez ajouter | grep -A7 Summ à la commande pour produite une version encore plus condensée du résumé. Vous pouvez également souhaiter rediriger la sortie dans un fichier pour étudier et comparer plus tard.

chown -v -R root:root /usr/lib/gcc/*linux-gnu/... : Si le paquet est construit par un utilisateur autre que root, les droits des répertoires include et adalib installés (et leur contenu) seront incorrects. Ces commandes changent les droits vers l'utilisateur et le groupe root.

Contenu

Programmes installés: gnat, gnatbind, gnatchop, gnatclean, gnatfind, gnatkr, gnatlink, gnatls, gnatmake, gnatname, gnatprep, gnatxref
Bibliothèques installées: libgnarl.{so,a}, libgnat.{so,a} dans /usr/lib/gcc/<arch-triplet>/6.3.0/adalib
Répertoires installés: /usr/lib/gcc/<arch-triplet>/6.3.0/ada{include,lib} et /usr/lib/gcc/<arch-triplet>/6.3.0/plugin/include/ada

Seuls les fichiers spécifiques à Ada sont listés ici. Les autres peuvent être trouvés sur la page ../../../../lfs/view/8.0/chapter06/gcc.html#contents-gcc comme ils ont été installé initialement pendant la construction de LFS.

Descriptions courtes

gnat

est une enveloppe qui accepte un nombre de commandes et d'appels aux outils correspondants dans la liste suivante.

gnatbind

est utilisé pour attacher des objets compilés.

gnatchop

est utile pour renommer des fichiers pour satisfaire les conventions de nommage standard par défaut des fichiers Ada.

gnatclean

est utilisé pour supprimer des fichiers associés à un projet GNAT.

gnatfind

est le chercheur de définitions/utilisation GNAT.

gnatkr

est utilisé pour déterminer le nom crunché d'un fichier donné, lorsqu'un crunch a été réglé à une longueur maximum spécifiée.

gnatlink

est utilisé pour lier des programmes et construire un fichier exécutable.

gnatls

est le navigateur d'unités compilées.

gnatmake

est le compilateur Ada qui effectue la compilation, le binding et lie les bibliothèques.

gnatname

listera les fichiers associés à un projet GNAT.

gnatprep

est le préprocesseur externe de GNAT.

gnatxref

est similaire à gnatfind, mais génère un rapport complet de toutes les références croisées.

Last updated on 2017-02-22 18:52:51 +0100