Gnu C et C ++ compilateurs pour linux
L'outil logiciel de développement le plus important dans Linux est GCC - GNU C et le compilateur C de. En fait, le CCG peut compiler trois langues: C, C ++ et Objective-C (une langue qui ajoute des capacités de la programmation orientée objet à C).
Vous utilisez le même gcc commande pour compiler et lier les deux fichiers source C et C ++. Le compilateur GCC supporte la norme ANSI C, ce qui rend facile à porter tout programme ANSI C pour Linux. En outre, si vous avez déjà utilisé un compilateur C sur d'autres systèmes Unix, vous devriez vous sentir à l'aise avec GCC.
En utilisant GCC
Utilisez le gcc commande d'invoquer GCC. Par défaut, lorsque vous utilisez la gcc commande sur un fichier source, prétraitements CCG, compile, et des liens pour créer un fichier exécutable. Cependant, vous pouvez utiliser les options du CCG à arrêter ce processus à un stade intermédiaire.
Par exemple, vous pourriez invoquer gcc en utilisant le -c option pour compiler un fichier source et de générer un fichier objet, mais pas pour effectuer l'étape de liaison.
En utilisant GCC pour compiler et lier quelques fichiers source de C est facile. Supposons que vous voulez compiler et lier un programme simple composée de deux fichiers source. Pour accomplir cette tâche, utilisez la source de programme suivant code- la tâche qui est stockée dans le fichier area.c calcule l'aire d'un cercle dont le rayon est spécifié sur la ligne de commande.
Compilation de programmes C ++
GNU CC est un C combinés et compilateur C ++, de sorte que le gcc commande peut aussi compiler les fichiers sources C. GCC utilise l'extension de fichier pour déterminer si un fichier est C ou C ++. Fichiers C ont une minuscule .c extension, tandis que C ++ fichiers se terminent par .C ou .cpp.
Bien que le gcc commande peut compiler un fichier C ++, cette commande ne lie pas automatiquement avec diverses bibliothèques de classes que les programmes de C nécessitent généralement. Compiler et lier un programme en C ++ en utilisant la commande g ++ est facile parce qu'il fonctionne gcc avec les options appropriées.
Explorer les options du CCG
Voici la syntaxe de base de la gcc commande:
Options gcc noms de fichiers
Chaque option commence par un tiret (-) et a généralement un nom long, comme -funsigned-char ou -Finline-fonctions. De nombreuses options couramment utilisées sont courtes, cependant, comme -c, pour compiler seulement, et -g, pour générer des informations de débogage (nécessaire pour déboguer le programme en utilisant le débogueur GNU, gdb).
Vous pouvez voir un résumé de toutes les options du CCG en tapant la commande suivante dans une fenêtre de terminal:
homme gcc
Ensuite, vous pouvez naviguer à travers les options du CCG couramment utilisés. Habituellement, vous ne devez pas fournir des options CCG explicitement parce que les paramètres par défaut sont très bien pour la plupart des applications. Ce tableau présente certaines des options que vous pouvez utiliser du CCG.
Option | Signification |
---|---|
-ansi | Prend en charge la syntaxe ANSI-que C standard. (Cette option disablessome caractéristiques GNU C-spécifiques, tels que the_asm et_Type demots-clés.) lorsqu'il est utilisé avec g ++, C ne supporte que la norme ISO ++. |
-c | Compile et génère uniquement le fichier objet. |
-Dmacro | Définit la macro avec la chaîne "1"comme sa valeur. |
-Dmacro = DEFN | Définit la macro comme DEFN, oùDEFN est une chaîne de caractères de texte. |
-E | Ne fonctionne que le préprocesseur C. |
-jachère simple précision | Effectue toutes les opérations mathématiques en simple précision. |
-CPAC-struct-return | Retourne tous struct et les valeurs de l'Union dans la mémoire, plutôt que inregisters. (Renvoi de valeurs de cette façon est moins efficace, mais au moins il est compatible avec d'autres compilateurs.) |
-fPIC | Génère indépendant de la position code (PIC) adapté pour une utilisation dans la bibliothèque ashared. |
-freg-struct-return | Lorsque cela est possible, les retours struct etunion les valeurs des registres. |
-g | Génère des informations de débogage. (Le débogueur GNU peut utiliser thisinformation.) |
-Je ANNUAIRE | Recherche dans le répertoire spécifié pour les fichiers que vous incluez l'parl'utilisation #comprendre directive du préprocesseur. |
-L ANNUAIRE | Recherche dans le répertoire spécifié pour les bibliothèques. |
-l BIBLIOTHÈQUE | Recherches la bibliothèque spécifiée lors de la liaison. |
-mcpu = cputype | Optimise code pour un processeur spécifique. (cputype peut prendre plusieurs valeurs différentes -SOMe plus courantes sont i386, i486, i586, i686, Pentium, PentiumPro, Pentium2, pentium3, pentium4.) |
-o FILE | Génère le fichier de sortie spécifié (utilisé pour désigner le NomDe un fichier exécutable). |
-00 (deux zéros) | Ne pas optimiser. |
-O ou -O1 (lettre O) | Optimise le code généré. |
-O2 (lettre O) | Optimise encore plus. |
-O3 (lettre O) | Effectue optimisations au-delà de celles effectuées pour O2 |
-Os (lettre O) | Optimise pour la taille (pour réduire le montant total de code). |
-pédant | Génère des erreurs si toutes les extensions non-standard ANSI areUsed. |
-pg | Ajoute du code supplémentaire pour le programme de telle sorte que, lorsqu'il est exécuté, ce programgenerates informations que le gprofprogramme peut utiliser pour afficher les détails de synchronisation pour différentes parties du duprogramme. |
-commun | Génère un fichier objet partagé (généralement utilisé pour créer la bibliothèque ashared). |
-UMACRO | Annule la définition des macros spécifiés. |
-v | Affiche le numéro de version de GCC. |
-w | Ne génère pas de messages d'avertissement. |
-W1, OPTION | Passe le OPTION chaîne (contenant les options de multiplecomma séparés) à l'éditeur de liens. Pour créer un librarynamed partagée libXXX.so.1, par exemple, utiliser thefollowing drapeau: -WL,-soname, libXXX.so.1. |