GCC-Ada-4.9.1

Introduction au compilateur Ada de GCC

Ada est un langage de programmation moderne pour des applications larges — et pour des systèmes embarqués en particulier — ou la fiabilité et l'efficatité 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 terme 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 Adacore, en utilisant le moteur de GCC. Depuis qu'une partie du compilateur Ada est écrit en Ada, il y a une dépendance circulaire dans le compilateur Ada. Les instructions dessous commencent par installer un binaire de compilateur.

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

[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. Mercu de lire la note et l'avertissement sur la page GCC-4.9.1.

Information 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 avec votre navigateur sur la page de téléchargement de AdaCore, choisissez votre plateforme et 2014, ensuite sélectionnez le fichier à télécharger. Alternativement, des liens directs pour les versions de linux 32 bits et 64 bits sont donnés en dessous.

Dépendances de GCC Ada

Recommandées

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

Installation du binaire GNAT

Avant de déballer et aller dans le répertoire des sources de GCC, en premier déballez l'archive GNAT, et allez dans le répertoire de GNAT. Ensuit, 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 éxécutant le binaire gcc installé dans /opt/gnat/bin.

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

Preparez la compilation de GCC en plaçant la version de GNAT de gcc au début de la variable PATH en utilisant la suite

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

Faire cela à l'inconvénient que les exécutables GCC et Binutils sont pris dans le paquet GNAT qui est juste installé, mais les versions de ses éxécutables sont dépassés comparés à ceux installés dans LFS. Ce n'est pas important pour les compilateurs GCC depuis qu'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 pendant tous le temps. Pour utiliser les outiles LFS, tappez 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

Comme dans LFS, corrigez un problème identifié par les developpeurs:

sed -i 's/if \((code.*))\)/if (\1 \&\& \!DEBUG_INSN_P (insn))/' gcc/sched-deps.c

Installez GCC Ada en lançant la suite

patch -Np1 -i ../gcc-4.9.1-upstream_fixes-1.patch &&
mkdir ../gcc-build &&
cd    ../gcc-build &&
../gcc-4.9.1/configure          \
    --prefix=/usr               \
    --libdir=/usr/lib           \
    --enable-shared             \
    --enable-threads=posix      \
    --enable-__cxa_atexit       \
    --enable-clocale=gnu        \
    --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 (passé avec un FAIL 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, spécialmeent si vous avez utilisé des travaux parallèles avec make, Vous pouvez avoir un résumé des tests avec:

../gcc-4.9.1/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/4.9.1/include{,-fixed} \
    /usr/lib/gcc/*linux-gnu/4.9.1/ada{lib,include}

vous pouvez maintenant supprimer l'installation de GNAT et faire d'autres nettoyages:

rm -rf /opt/gnat &&
export PATH=$PATH_HOLD &&
unset PATH_HOLD

Explications des commandes

patch ... gcc-4.9.1-upstream_fixes-1.patch: Ce correctif corriges les bogues dans le compilateur C++, qui aboutissent à des erreurs de segmentation dans certain cas.

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

--enable-shared --enable-threads=posix --enable-__cxa_atexit : Ces paramètres sont requis pour construire les bibliothèques de C++ pour publier les standards.

--enable-clocale=gnu : Ce paramètre est une sécurité contre les données locale incomplètes.

--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é. 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 inévitable que les compilateurs C et C++ soient reconstruits.

ulimit -s 32768 : Cette commande empêche plusieurs tests de se lancer en dehors de la pile.

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

../gcc-4.9.1/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 changes 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, et un éxécutable run-time, gnat1, dans /usr/libexec/<arch-triplet>/4.9.1
Bibliothèques installées: libgnat.{so,a}, libgnarl.{so,a} in /usr/lib/gcc/<arch-triplet>/4.9.1/adalib
Répertoires installés: /usr/lib/gcc/<arch-triplet>/4.9.1/ada{include,lib}

Seulement mes fichiers spécifiques à Ada sont listés ici. Les autres peuvent être trouvés sur la page http://www.fr.linuxfromscratch.org/view/lfs-stable/chapter06/gcc.html#contents-gcc comme ils ont été installé initialement pendant la construction de LFS.

Description courte

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 du fichier 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 une possibilité make automatique.

gnatname

listera les fichiers associés à un projet GNAT.

gnatprep

est le préprocesseur externe de GNAT.

gnatxref

est le référenceur croisé GNAT.

Last updated on 2014-05-10 22:28:15 +0200