Recherche…


Remarques

GCC (majuscule) fait référence à la collection de compilateurs GNU. Ceci est une suite de compilateur open source qui inclut des compilateurs pour C, C ++, Objective C, Fortran, Ada, Go et Java. gcc (minuscule) est le compilateur C de la collection GNU Compiler. Historiquement, GCC et gcc ont été utilisés indifféremment, mais des efforts sont faits pour séparer les deux termes car GCC contient des outils pour compiler plus que C.

La documentation de cette section fera référence à gcc, le compilateur GNU C. L'intention est de fournir une recherche rapide des actions et options communes. Le projet GCC contient une documentation détaillée à l' adresse https://gcc.gnu.org, sur l'installation des documents, leur utilisation générale et chaque option de ligne de commande. Veuillez vous reporter à la documentation officielle du CCG pour toute question à laquelle il n'a pas été répondu ici. Si un certain sujet n'est pas clair dans la documentation de GCC, veuillez demander des exemples spécifiques.

Versions

Version Date de sortie
7.1 2017-05-02
6.3 2016-12-21
6.2 2016-08-22
5.4 2016-06-03
6.1 2016-04-27
5.3 2015-12-04
5.2 2015-07-16
5.1 2015-04-22
4.9 2014-04-22
4.8 2013-03-22
4.7 2012-03-22
4.6 2011-03-25
4.5 2010-04-14
4.4 2009-04-21
4.3 2008-03-05
4.2 2007-05-13
4.1 2006-02-28
4.0 2005-04-20
3.4 2004-04-18
3.3 2003-05-13
3.2 2002-08-14
3.1 2002-05-15
3.0 2001-06-18
2.95 1999-07-31
2.8 1998-01-07
2.7 1995-06-16
2.6 1994-07-14
2,5 1993-10-22
2.4 1993-05-17
2.3 1992-10-31
2.2 1992-06-08
2.1 1992-03-24
2.0 1992-02-22
1,42 1992-09-20
1,41 1992-07-13
1,40 1991-06-01
1,39 1991-01-16
1,38 1990-12-21
1,37 1990-02-11
1,36 1989-09-24
1,35 1989-04-26
1.34 1989-02-23
1,33 1989-02-01
1,32 1988-12-21
1.31 1988-11-19
1,30 1988-10-13
1,29 1988-10-06
1,28 1988-09-14
1,27 1988-09-05
1,26 1988-08-18
1,25 1988-08-03
1,24 1988-07-02
1,23 1988-06-26
1,22 1988-05-22
1,21 1988-05-01
1,20 1988-04-19
1,19 1988-03-29
1,18 1988-02-04
1,17 1988-01-09
1,16 1987-12-19
1,15 1987-11-28
1,14 1987-11-06
1.13 1987-10-12
1.12 1987-10-03
1.11 1987-09-05
1.10 1987-08-22
1,9 1987-08-18
1.8 1987-08-10
1,7 1987-07-21
1.6 1987-07-02
1,5 1987-06-18
1.4 1987-06-13
1.3 1987-06-10
1.2 1987-06-01
1.1 1987-05-24
1.0 1987-05-23
0,9 1987-03-22

"Bonjour le monde!" avec des options de ligne de commande communes

Pour les programmes avec un seul fichier source, utiliser gcc est simple.

/* File name is hello_world.c */
#include <stdio.h>

int main(void)
{
    int i;
    printf("Hello world!\n");
}

Pour compiler le fichier hello_world.c à partir de la ligne de commande:

gcc hello_world.c

gcc compilera alors le programme et affichera l'exécutable dans le fichier a.out. Si vous voulez nommer l'exécutable, utilisez l'option -o.

gcc hello_world.c -o hello_world

L'exécutable s'appellera alors hello_world au lieu de a.out. Par défaut, il n'y a pas beaucoup d'avertissements émis par gcc. gcc a beaucoup d'options d'avertissement et c'est une bonne idée de parcourir la documentation de gcc pour savoir ce qui est disponible. Utiliser «-Wall» est un bon point de départ et couvre de nombreux problèmes courants.

gcc -Wall hello_world.c -o hello_world

Sortie:

hello_world.c: In function ‘main’:
hello_world.c:6:9: warning: unused variable ‘i’ [-Wunused-variable]
     int i;
         ^

Nous voyons ici que nous avons maintenant un avertissement que la variable 'i' a été déclarée mais pas du tout utilisée dans la fonction.

Si vous prévoyez d'utiliser un débogueur pour tester votre programme, vous devez indiquer à gcc d'inclure des informations de débogage. Utilisez l'option '-g' pour le support du débogage.

gcc -Wall -g hello_world.c -o hello_world

hello_world a maintenant des informations de débogage présentes prises en charge par GDB. Si vous utilisez un autre débogueur, vous devrez peut-être utiliser différentes options de débogage pour que la sortie soit correctement formatée. Voir la documentation officielle de gcc pour plus d'options de débogage.

Par défaut, gcc compile le code pour qu'il soit facile de déboguer. gcc peut optimiser la sortie pour que le fichier exécutable final produise le même résultat, mais avec des performances plus rapides et un exécutable de taille inférieure. L'option '-O' permet l'optimisation. Il y a plusieurs qualificateurs reconnus à ajouter après le O pour spécifier le niveau d'optimisation. Chaque niveau d'optimisation ajoute ou supprime une liste d'ensemble d'options de ligne de commande. '-O2', '-Os', '-O0' et '-Og' sont les niveaux d'optimisation les plus courants.

gcc -Wall -O2 hello_world.c -o hello_world

«-O2» est le niveau d'optimisation le plus courant pour le code prêt pour la production. Il fournit un excellent équilibre entre l'augmentation des performances et la taille finale de l'exécutable.

gcc -Wall -Os hello_world.c -o hello_world

"-Os" est similaire à "-O2", sauf que certaines optimisations qui peuvent augmenter la vitesse d'exécution en augmentant la taille de l'exécutable sont désactivées. Si la taille finale de l'exécutable compte pour vous, essayez "-Os" et vérifiez s'il existe une différence de taille notable dans l'exécutable final.

gcc -Wall -g -Og hello_world.c -o -hello_world

Notez que dans les exemples ci-dessus avec «-Os» et «-O2», l'option «-g» a été supprimée. En effet, lorsque vous commencez à demander au compilateur d'optimiser le code, certaines lignes de code peuvent en principe ne plus exister dans l'exécutable final, ce qui rend le débogage difficile. Cependant, il existe également des cas où certaines erreurs se produisent uniquement lorsque les optimisations sont activées. Si vous souhaitez déboguer votre application et que le compilateur optimise le code, essayez l'option "-Og". Cela indique à gcc d’effectuer toutes les optimisations qui ne devraient pas entraver l’expérience de débogage.

gcc -Wall -g -O0 hello_world.c -o hello_world

'-O0' effectue encore moins d'optimisations que '-Og'. C'est le niveau d'optimisation que gcc utilise par défaut. Utilisez cette option si vous voulez vous assurer que les optimisations sont désactivées.

Déterminer la version de gcc

En vous référant à la documentation de gcc, vous devez savoir quelle version de gcc vous utilisez. Le projet GCC a un manuel pour chaque version de gcc qui inclut des fonctionnalités implémentées dans cette version. Utilisez l'option '-v' pour déterminer la version de gcc que vous utilisez.

gcc -v

Exemple de sortie:

Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/5.3.1/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,objc,obj-c++,fortran,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --disable-libgcj --with-default-libstdcxx-abi=gcc4-compatible --with-isl --enable-libmpx --enable-gnu-indirect-function --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 5.3.1 20160406 (Red Hat 5.3.1-6) (GCC)

Dans cet exemple, nous voyons que nous exécutons la version 5.3.1 de gcc. Vous saurez alors vous référer au manuel GCC 5.3. Il est également utile d'inclure votre version de gcc lorsque vous posez des questions si vous rencontrez un problème spécifique à la version.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow