GNU Compiler Collection, abrégé en GCC, est un ensemble de compilateurs créés par le projet GNU. GCC est un logiciel libre capable de compiler divers langages de programmation, dont C, C++, Objective-C, Java, Ada, Fortran et Go.
GCC est utilisé pour le développement de la plupart des logiciels libres. Le noyau Linux dépend notamment étroitement des fonctionnalités de GCC.
GCC a été conçu pour remplacer le compilateur C fourni en standard sur le système d'exploitation Unix, qui s'appelle CC. GCC signifiait à l'origine GNU C Compiler, soit le « compilateur C de GNU ». Comme GCC est très extensible, la prise en charge de nombreux autres langages a été ajoutée et le nom officiel a été changé en GNU Compiler Collection.
En pratique, l'abréviation GCC est utilisée pour nommer trois entités légèrement différentes :
la collection complète de compilateurs (le « projet GCC ») ;
la partie commune à tous les compilateurs (« GCC ») ;
le compilateur C lui-même (le frontend « gcc », écrit en minuscule).
Pour faire référence précisément aux compilateurs de chaque langage, on parle de :
gcc pour C ;
G++ pour C++ ;
GobjC pour Objective-C ;
GobjC++ pour Objective C++ ;
GCJ pour Java ;
GNAT pour Ada ;
GFortran pour Fortran ;
gccgo pour Go ;
gdc pour D.
Il existe de nombreux autres compilateurs basés sur GCC qui ne font pas partie de la distribution standard du projet GCC.
Depuis la version 4.5 (et surtout 4.6), les compilateurs GCC sont extensibles par des greffons (« plugins »). Ceux-ci doivent être du logiciel libre et peuvent ajouter des passes d'optimisations, des pragmas, builtins ou attributs (mais ne peuvent pas étendre la syntaxe acceptée par GCC). Il existe quelques greffons pour GCC : Mozilla avait développé Tree Hydra (abandonné). gcc python plugin permet d'étendre GCC avec des scripts Python, notamment pour vérifier du code C pour Python. MELT est un langage spécifique, inspiré de Lisp pour étendre GCC.
GNU Debugger
GCC dispose également d'un outil de débogage, GNU Debugger (gdb).
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
L'objectif de ce cours est d'introduire les étudiants à la pensée algorithmique, de les familiariser avec les fondamentaux de l'Informatique et de développer une première compétence en programmation (
We teach the fundamental aspects of analyzing and interpreting computer languages, including the techniques to build compilers. You will build a working compiler from an elegant functional language in
Couvre les structures de contrôle en Java, y compris les opérateurs logiques, la portée, la branchement, les boucles et les itérations.
Couvre la génération de code pour un compilateur, traduisant un programme Amy à WebAssembly, y compris la gestion de la mémoire et la compilation de correspondance de motifs.
Couvre les bases de la programmation C, y compris la syntaxe, les types de données, les pointeurs, les tableaux et les commandes de compilation.
Rust est un langage de programmation compilé multi-paradigme conçu et développé par Mozilla Research depuis 2010. Il a été conçu pour être « un langage fiable, concurrent, pratique », supportant les styles de programmation purement fonctionnel, modèle d'acteur, procédural, ainsi qu'orienté objet sous certains aspects. En 2020, ses domaines de prédilection sont la programmation système, les applications en ligne de commande, les applications Web via WebAssembly, les services réseaux et les systèmes embarqués.
Go est un langage de programmation compilé et concurrent inspiré de C et Pascal. Il a été développé par Google à partir d’un concept initial de , Rob Pike et Ken Thompson. vignette|alt=Logo de Google Go|droite|Mascotte de Google Go Go veut faciliter et accélérer la programmation à grande échelle : en raison de sa simplicité, il est donc concevable de l’utiliser aussi bien pour écrire des applications, des scripts ou de grands systèmes. Cette simplicité est nécessaire aussi pour assurer la maintenance et l’évolution des programmes sur plusieurs générations de développeurs.
Pascal est un langage de programmation impératif qui, conçu pour l'enseignement, se caractérise par une syntaxe claire, rigoureuse et facilitant la structuration des programmes. Le langage Pascal a été le premier langage de ce type (Impératif) largement répandu dans le monde, et ce, 2 ans avant le langage C. Le pascal (à partir de Borland Pascal 4 ou au delà) a les caractéristiques suivantes : Langage verbeux (anglais) Blocs d'instructions avec Begin et End Les mots clés, variables, fonctions et procédures sont insensibles à la casse.
In this course you will discover the elements of the functional programming style and learn how to apply them usefully in your daily programming tasks. You will also develop a solid foundation for rea
This advanced undergraduate programming course covers the principles of functional programming using Scala, including the use of functions as values, recursion, immutability, pattern matching, higher-
Fully-Homomorphic Encryption (FHE) offers powerful capabilities by enabling secure offloading of both storage and computation, and recent innovations in schemes and implementations have made it all the more attractive. At the same time, FHE is notoriously ...
Analyzing the security of closed source binaries is currently impractical for end-users, or even developers who rely on third-party libraries. Such analysis relies on automatic vulnerability discovery techniques, most notably fuzzing with sanitizers enable ...
We present a generic resynthesis framework for optimizing Boolean networks parameterized with a multi-level logic representation, a cut-computation algorithm, and a resynthesis algorithm. The framework allows us to realize powerful optimization algorithms ...