HOWTO · C++

Compiler un programme C++ avec GCC

Cet article décrit une méthode pour compiler un programme C++ à l'aide du compilateur gcc.

Sur cette page

Pour compiler et exécuter un fichier source C++ avec GCC, utilisez le pilote de compilation g++ : lancez g++ -o hello hello.cpp, puis ./hello sous Linux ou macOS. GCC est la collection de compilateurs GNU ; g++ sélectionne le comportement de compilation C++, notamment la liaison à la bibliothèque standard C++ pour un programme classique. Les étapes ci-dessous couvrent la disponibilité du compilateur, un premier programme, les diagnostics courants et la compilation de plusieurs fichiers.

Comprendre GCC et son importance

GCC est une collection de compilateurs qui comprend des pilotes pour plusieurs langages. Pour programmer en C++, g++ est généralement le pilote le plus simple à choisir. Une compilation transforme le code source, puis lie le code objet obtenu et les bibliothèques nécessaires pour produire un exécutable. Une seule commande peut effectuer ces deux étapes ; dans un projet plus important, les fichiers peuvent être compilés séparément avant d’être liés.

Le pilote gcc peut compiler du code source C++, mais il ne lie pas automatiquement la bibliothèque standard C++ comme le fait g++. Avec les chaînes d’outils GNU/Linux, on peut utiliser gcc avec -lstdc++ pour demander explicitement cette bibliothèque ; l’ordre des bibliothèques et les détails de la plateforme peuvent avoir leur importance. Pour les compilations C++ courantes, utilisez donc g++. Les fichiers source portent souvent l’extension .cpp ou .cc ; GCC traite aussi l’extension .C majuscule comme du C++ sur les systèmes sensibles à la casse.

Installer GCC

Commencez par vérifier si un compilateur C++ est déjà disponible en exécutant g++ --version dans un terminal. Si le compilateur est installé, cette commande en affiche la version. Si la commande est introuvable, installez une chaîne d’outils C++ avec le gestionnaire de paquets de votre système d’exploitation ou le fournisseur d’outils recommandé pour ce système. Les noms de paquets et les étapes d’installation varient ; sur Ubuntu et certaines distributions apparentées, build-essential comprend GCC et d’autres outils de compilation. Sous Windows, installez une chaîne d’outils GCC telle que MinGW-w64 et ajoutez son répertoire bin à PATH, ou utilisez une autre chaîne d’outils C++ prise en charge. Suivez les instructions actuelles de votre distribution ou de votre chaîne d’outils au lieu de vous fier à un numéro de version provenant d’un ancien exemple.

Écrire votre premier programme C++

Créez un fichier nommé hello.cpp dans un répertoire de travail. Ce programme écrit une ligne sur la sortie standard :

Exécutez cet exemple :

#include <iostream>

int main() {
    std::cout << "Hello, World!\n";
    return 0;
}
Hello, World!

#include <iostream> fournit les déclarations de flux utilisées par std::cout. La fonction main est le point d’entrée du programme, et \n termine la ligne affichée.

Compiler le programme C++

Depuis le répertoire contenant hello.cpp, compilez le programme et nommez l’exécutable avec g++ -o hello hello.cpp. L’option -o indique le nom de sortie ; sans elle, GCC utilise un nom par défaut, comme a.out sur de nombreux systèmes de type Unix. Le résultat est un exécutable, et non un fichier objet. Lancez-le avec ./hello sous Linux ou macOS. Dans l’invite de commandes Windows, on utilise couramment hello.exe depuis le répertoire courant ; l’invocation exacte dépend du shell et de la chaîne d’outils.

Comme solution de remplacement orientée GNU/Linux, gcc -o hello hello.cpp -lstdc++ demande explicitement la bibliothèque standard C++. Cette méthode peut être utile si un système de compilation impose le pilote gcc, mais g++ est préférable pour un programme C++ classique, car il sélectionne automatiquement le comportement de liaison C++ approprié.

Corriger les erreurs de compilation

Lisez un diagnostic de gauche à droite : il indique un fichier source et une ligne, puis décrit le problème. Par exemple, si un programme utilise cout sans inclure <iostream> ni le qualifier en std::cout, le diagnostic peut signaler que cout n’a pas été déclaré. Ajoutez l’inclusion manquante et utilisez std::cout, puis relancez la compilation. La formulation exacte et les numéros de ligne varient selon la version du compilateur et la disposition du code source.

Vous pouvez demander à GCC d’activer des avertissements courants avec g++ -Wall -o hello hello.cpp. -Wall est un bon point de départ, mais cette option n’active pas tous les avertissements proposés par GCC. Les avertissements sont des messages de diagnostic qui peuvent signaler du code suspect ; examinez-les et déterminez si le code ou les options de compilation doivent être modifiés.

Lier plusieurs fichiers

Un programme peut définir une fonction dans un fichier source et l’appeler depuis un autre. Par exemple, main.cpp peut inclure <iostream>, déclarer int add(int, int); et définir int main() { std::cout << add(2, 3) << '\n'; }. Dans functions.cpp, définissez int add(int a, int b) { return a + b; }. Cette déclaration et cette définition concordantes permettent au compilateur de vérifier l’appel et à l’éditeur de liens de le rattacher à l’implémentation.

Compilez les deux fichiers source en une seule commande : g++ -o my_program main.cpp functions.cpp. Cette commande compile chaque fichier source et les lie dans l’exécutable my_program. Lancez ./my_program sous Linux ou macOS ; l’exemple affiche 5. Sous Windows, lancez le fichier obtenu, my_program.exe, en utilisant la commande prise en charge par votre shell.

Conclusion

Pour une compilation C++ classique avec GCC, utilisez g++ -o program source.cpp, puis lancez l’exécutable produit par cette commande. Le pilote gcc peut également compiler du C++, mais les compilations GNU/Linux peuvent nécessiter l’ajout explicite de -lstdc++. Dans la plupart des cas, choisir g++ évite cette option de bibliothèque supplémentaire.

FAQ

  1. Qu’est-ce que GCC ? GCC est la collection de compilateurs GNU, qui fournit des pilotes de compilation pour C++, C et d’autres langages.
  2. Comment vérifier si GCC est installé ? Exécutez g++ --version pour vérifier la présence du pilote C++, ou gcc --version pour celle du pilote C.
  3. Pourquoi utiliser g++ plutôt que gcc pour le C++ ? g++ sélectionne automatiquement le comportement de liaison C++, notamment la bibliothèque standard nécessaire aux programmes courants. Avec gcc, une compilation GNU/Linux peut nécessiter l’ajout explicite de -lstdc++.
  4. Une seule commande peut-elle compiler plusieurs fichiers C++ ? Oui. Indiquez chaque fichier source dans la commande g++, par exemple g++ -o my_program main.cpp functions.cpp.
  5. À quoi sert -o ? Cette option nomme le fichier de sortie, qui est un exécutable pour une commande de compilation complète telle que g++ -o hello hello.cpp.