Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
gcc [Le 09/05/2016, 14:31] bcag2 ajout sous§ en C++ |
gcc [Le 20/12/2021, 21:44] wiki-corrector-bot passage de http à https sur les liens externes (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892) |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
{{tag>programmation compilation java}} | {{tag>programmation compilation java}} | ||
+ | |||
+ | {{ gcc_logo.png?80nolink| Logo GCC}} | ||
====== GCC, le jeu de compilateurs GNU ====== | ====== GCC, le jeu de compilateurs GNU ====== | ||
Ligne 6: | Ligne 9: | ||
Le noyau [[Linux]] dépend dans sa compilation des possibilités pointues de son compilateur C. | Le noyau [[Linux]] dépend dans sa compilation des possibilités pointues de son compilateur C. | ||
- | |||
===== Installation ===== | ===== Installation ===== | ||
Ligne 13: | Ligne 15: | ||
À noter que lorsque l'on installe le paquet virtuel ''build-essential'', il est fait appel à GCC pour la partie compilation. Mais cela ajoute d'autres utilitaires comme [[Make]] qui sont généralement nécessaires à toute compilation plus poussée que le simple bout de code. Il est donc conseillé d'installer directement **[[apt://build-essential|build-essential]]**. | À noter que lorsque l'on installe le paquet virtuel ''build-essential'', il est fait appel à GCC pour la partie compilation. Mais cela ajoute d'autres utilitaires comme [[Make]] qui sont généralement nécessaires à toute compilation plus poussée que le simple bout de code. Il est donc conseillé d'installer directement **[[apt://build-essential|build-essential]]**. | ||
+ | |||
+ | ==== Installer une autre version (…plus récente) ==== | ||
+ | |||
+ | Si vous ne savez pas quelle version vous voulez installer, vous pouvez exécuter: | ||
+ | <code> | ||
+ | dpkg -l gcc* | ||
+ | </code> | ||
+ | |||
+ | Puis, exécutez, avec les [[:sudo|droits d'administration]], la liste suivante de commandes((https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-on-ubuntu/581497)) en remplaçant si besoin le 8 par le numéro de version voulue: | ||
+ | <code> | ||
+ | add-apt-repository ppa:ubuntu-toolchain-r/test | ||
+ | apt-get update | ||
+ | apt-get install gcc-8 g++-8 | ||
+ | update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-8 | ||
+ | </code> | ||
+ | |||
+ | Puis finalement, choisir la version de **''gcc''** par défaut de manière interactive : | ||
+ | <code>update-alternatives --config gcc</code> | ||
===== Utilisation ===== | ===== Utilisation ===== | ||
- | On peut appeler GCC directement par ligne de commande ou à travers un [[wpfr>Environnement de développement intégré|EDI]]. On pourra se reporter à la [[programmation|page générique sur la programmation]] pour une liste d'EDIs par langage. | + | ==== en C ==== |
+ | On peut appeler GCC directement par ligne de commande ou à travers un [[wpfr>Environnement de développement intégré|EDI]]. On pourra se reporter à la [[programmation|page générique sur la programmation]] pour une liste d'EDI par langage. | ||
Basiquement, la syntaxe est la suivante (exécution dans un [[terminal]]) : | Basiquement, la syntaxe est la suivante (exécution dans un [[terminal]]) : | ||
Ligne 24: | Ligne 45: | ||
À noter qu'il faut se trouver dans le dossier où se situe le fichier.c. | À noter qu'il faut se trouver dans le dossier où se situe le fichier.c. | ||
- | ===== en C++ ===== | + | ==== en C++ ==== |
Utilisation classique : | Utilisation classique : | ||
Ligne 33: | Ligne 54: | ||
-o pour output, permet de définir le fichier de sortie. Si absent, le fichier créé est nommé a.out | -o pour output, permet de définir le fichier de sortie. Si absent, le fichier créé est nommé a.out | ||
- | Détermine le langage standard: | + | Détermine le langage standard((https://isocpp.org/std/the-standard)): |
<code>-std=c++14</code> | <code>-std=c++14</code> | ||
Ligne 48: | Ligne 69: | ||
on peut compléter -Wall avec | on peut compléter -Wall avec | ||
<code>-Wextra</code> | <code>-Wextra</code> | ||
+ | |||
+ | Compilation sans édition de lien: | ||
+ | <code>g++ -c fichier.cpp </code> | ||
+ | à la différence de l'option //-S// vue plus haut, cela crée le(s) fichier(s) objet(s) | ||
+ | |||
+ | Compiler avec option de debuggage: | ||
+ | <code>g++ -g fichier.cpp -o binaire_debuggable</code> | ||
+ | |||
+ | Compiler avec des fichiers //include// (header files): | ||
+ | <code>g++ -c fichier.cpp -I./include</code> | ||
+ | Nota: vos fichier .h ou .hpp sont généralement avec vos sources, il est inutile d'ajouter cette option pour ces fichiers, en revanche, si vous avez des librairies à lier, il faut spécifier le chemin des fichiers //headers// de ces librairies. | ||
Optimisation: | Optimisation: | ||
Ligne 57: | Ligne 89: | ||
Pour une liste exhaustive des multiples options ou optimisations et pour une syntaxe détaillée de GCC, consulter la [[man|page de manuel]] de gcc (longue de plus de 15000 lignes) . | Pour une liste exhaustive des multiples options ou optimisations et pour une syntaxe détaillée de GCC, consulter la [[man|page de manuel]] de gcc (longue de plus de 15000 lignes) . | ||
+ | ===== Exécution ===== | ||
+ | |||
+ | * Pour exécuter le programme/fichier binaire généré par le GCC, programmé en c par exemple, avec un fichier nommé "BinaireTest" | ||
+ | * <code>./BinaireTest</code> | ||
+ | * Si vous avez des erreur liées aux permissions, essayez de modifier le "droit d'accès" du ficher avec cette commande : | ||
+ | * <code>sudo chmod 770 BinaireTest</code> | ||
===== Liens ===== | ===== Liens ===== | ||
Ligne 62: | Ligne 100: | ||
* Site officiel : [[http://gcc.gnu.org|GCC, the GNU Compiler Collection]] [en] | * Site officiel : [[http://gcc.gnu.org|GCC, the GNU Compiler Collection]] [en] | ||
* Wikipedia : [[wpfr>GNU_Compiler_Collection|Page sur GCC]] [fr] | * Wikipedia : [[wpfr>GNU_Compiler_Collection|Page sur GCC]] [fr] | ||
- | * Tutoriel gcc : [[http://fr.openclassrooms.com/informatique/cours/compilez-sous-gnu-linux|Compilez sous GNU/Linux]] [fr] | + | * Tutoriel gcc : [[https://user.oc-static.com/pdf/31992-compilez-sous-gnu-linux.pdf|compilez sous gnu linux]] (document non mis à jour depuis 2013) |
+ | * [[gdb|Débugage avec gdb]] | ||
---- | ---- | ||
- | //Contributeurs : [[utilisateurs:Johndescs]]// | + | //Contributeurs : [[utilisateurs:Johndescs]], [[utilisateurs:bcag2]], [[utilisateurs:bensuperpc]]// |