GCC-Ada-8.2.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.3.
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-8.2.0.
Note
Si vous souhaitez installer d'autres compilateurs dans la
collection GCC, ajoutez-les
simplement au 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. Si vous avez
déjà installé ADA, vous n'avez pas besoin d'utiliser les
instructions de cette page, ajoutez simplement ada
au paramètre --enable-languages
avec les
instructions de GCC-8.2.0.
Informations sur le paquet
Téléchargements supplémentaires
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 2017 (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
DejaGnu-1.6.1, pour les tests
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 \
--disable-libmpx \
--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/8.2.0/include{,-fixed} \
/usr/lib/gcc/*linux-gnu/8.2.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>/8.2.0/adalib
Répertoires installés:
/usr/lib/gcc/<arch-triplet>/8.2.0/ada{include,lib}
et
/usr/lib/gcc/<arch-triplet>/8.2.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.3/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 2018-09-02 00:33:23 +0200