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
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
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
DejaGnu-1.5.1, pour les tests
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