Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
gcc [Le 02/07/2010, 15:29]
YoBoY tags superflus
gcc [Le 20/12/2021, 21:44] (Version actuelle)
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 22: Ligne 43:
 en remplaçant bien sûr ''​code.ext''​ par le fichier source d'​entrée et ''​binaire''​ par le fichier de sortie souhaité. À défaut de paramètre //output file// (''​-o binaire''​),​ gcc créera ''​a.out''​. en remplaçant bien sûr ''​code.ext''​ par le fichier source d'​entrée et ''​binaire''​ par le fichier de sortie souhaité. À défaut de paramètre //output file// (''​-o binaire''​),​ gcc créera ''​a.out''​.
  
-Pour une liste exhaustive des multiples options ou optimisations et pour une syntaxe détaillée de GCC, consulter la (longue… plus de 8000 lignes) [[man|page de manuel]] de gcc.+À noter qu'il faut se trouver dans le dossier où se situe le fichier.c
  
 +==== en C++ ====
 +Utilisation classique :
 +
 +<​code>​ g++ fichier.cpp -std=c++11 -Wall -Wextra -o fichier_executable </​code>​
 +
 +<​code>​-o fichier_executable </​code>​
 +
 +-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((https://​isocpp.org/​std/​the-standard)):​
 +<​code>​-std=c++14</​code>​
 +
 +Compilation simple (sans assemblage) :
 +Pour simplement compiler afin de vérifier l'​absence d'​erreur (ou plutôt voir ses erreurs), on utilise :
 +<​code>​g++ -S fichier.cpp</​code>​
 +
 +Warnings:
 +pour que le compilateur retourne des warning sur des parties de codes qui lui semble incorrecte, on utilise généralement :
 +<​code>​-Wall</​code>​
 +
 +on retrouve la liste des options que cela englobe à l'​adresse ci-dessous:​\\
 +https://​gcc.gnu.org/​onlinedocs/​gcc/​Warning-Options.html\\
 +on peut compléter -Wall avec
 +<​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:​
 +-O1 ou -O2 ... ou -O3
 +
 +Quelle version utilise-t-on?​
 +<​code>​g++ --version</​code>​
 +\\
 +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 29: 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://www.siteduzero.com/tutoriel-3-31992-compilez-sous-gnu-linux.html|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]]//
  • gcc.1278077386.txt.gz
  • Dernière modification: Le 18/04/2011, 14:52
  • (modification externe)