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 12/09/2009, 21:42]
draco31.fr suppression tag développement
gcc [Le 08/03/2023, 11:41] (Version actuelle)
86.67.213.218 [GCC, le jeu de compilateurs GNU]
Ligne 1: Ligne 1:
-{{tag>​programmation compilation ​java fortran}}+{{tag>​programmation compilation java}} 
 + 
 +{{ gcc_logo.png?​80nolink| Logo GCC}}
  
 ====== GCC, le jeu de compilateurs GNU ====== ====== GCC, le jeu de compilateurs GNU ======
  
-GCC (GNU Compiler Collection) est une suite de logiciels libres de compilation. On l'​utilise dans le monde Linux dès que l'on veut transcrire du code source en langage machine, c'est le plus répandu des compilateurs. La suite gère le et ses dérivés mais aussi le Java ou encore le Fortran.+GCC (GNU Compiler Collection) est une suite de logiciels libres de compilation. On l'​utilise dans le monde Linux dès que l'on veut transcrire du code source en langage machine, c'est le plus répandu des compilateurs. La suite gère les langages ​C, C++, Objective-C,​ [[Fortran]], Ada, Go et D.
  
 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 14:
  
 À 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 42:
 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) ​[[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 99:
   * 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 : [[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.1252784579.txt.gz
  • Dernière modification: Le 18/04/2011, 14:53
  • (modification externe)