---
title: "Installare un compilatore C e C++ su Windows, Linux e macOS"
description: "Come installare GCC con MSYS2 su Windows, build-essential su Linux e gli strumenti di Xcode su macOS, con i comandi per compilare e il setup di VS Code."
url: "https://www.alemasone.com/it/installare-gcc-windows-linux-macos/"
language: "it"
published: 2024-07-20
updated: 2026-09-19
categories: ["Programmazione E Sviluppo"]
translations:
  en: "https://www.alemasone.com/en/install-c-cpp-compilers-windows-linux-macos/"
  es: "https://www.alemasone.com/es/instalar-compilador-c-cpp-windows-linux-macos/"
  fr: "https://www.alemasone.com/fr/installer-compilateur-c-cpp-windows-linux-macos/"
  pt: "https://www.alemasone.com/pt/instalar-compilador-c-cpp-windows-linux-macos/"
  de: "https://www.alemasone.com/de/c-cpp-compiler-installieren-windows-linux-macos/"
---

# Installare un compilatore C e C++ su Windows, Linux e macOS

Su Linux e macOS il compilatore si installa con un comando. Su Windows oggi la strada giusta è **MSYS2**, che ti dà GCC tramite MinGW-w64 e lo aggiorna da solo. Il vecchio MinGW di SourceForge, quello con l'Installation Manager che trovi in tante guide (anche nella prima versione di questa), è fermo da anni, produce solo programmi a 32 bit e non va più usato.

Il compilatore trasforma il codice sorgente in un programma eseguibile. Per C e C++ i più usati sono due: **GCC**, in giro dal 1987 e disponibile ovunque, e **[Clang](https://clang.llvm.org/)**, più giovane, con messaggi di errore più chiari e predefinito su macOS. L'ultima versione di GCC è la 16, uscita ad aprile 2026, che per il C++ usa lo standard C++20 di serie.

Di seguito trovi l'installazione su tutti e tre i sistemi, i comandi per compilare e la configurazione di Visual Studio Code.

## Windows: MSYS2 e MinGW-w64

[MinGW-w64](https://www.mingw-w64.org/) è la versione di GCC che produce eseguibili nativi per Windows. MSYS2 è l'ambiente che la distribuisce e la mantiene aggiornata.

1. Scarica il programma di installazione dal [sito ufficiale di MSYS2](https://www.msys2.org/) e installalo lasciando il percorso predefinito `C:\msys64`.

2. Al termine si apre un terminale MSYS2. Aggiorna i pacchetti di base:

   ```bash
   pacman -Syu
   ```

   Se la finestra si chiude durante l'aggiornamento non preoccuparti: riaprila dal menu Start (**MSYS2 UCRT64**) e ripeti il comando finché non c'è più niente da aggiornare.

3. Installa il gruppo di strumenti di compilazione a 64 bit:

   ```bash
   pacman -S mingw-w64-ucrt-x86_64-toolchain
   ```

   Quando ti chiede quali pacchetti installare, premi <kbd>Invio</kbd> per prenderli tutti, poi conferma con <kbd>Y</kbd>. Se ti serve anche il debugger, è già compreso: `gdb` fa parte del gruppo.

4. Aggiungi la cartella dei compilatori al PATH di Windows, così li usi da qualsiasi terminale. Cerca **Modifica le variabili di ambiente relative al sistema** nel menu Start (oppure vai in **Impostazioni** → **Sistema** → **Informazioni** → **Impostazioni di sistema avanzate**), premi **Variabili d'ambiente**, seleziona `Path` fra le variabili dell'utente, poi **Modifica** → **Nuovo** e scrivi:

   ```text
   C:\msys64\ucrt64\bin
   ```

5. Conferma con **OK** su tutte le finestre, apri un **nuovo** Prompt dei comandi e controlla:

   ```bat
   gcc --version
   g++ --version
   ```

![Finestra Variabili d'ambiente di Windows con la voce Path fra le variabili utente](variabili-ambiente-windows-compilazione-c.png "La voce Path da modificare si trova nel riquadro delle variabili utente")

> **Ci sono anche strade più corte.** **[w64devkit](https://github.com/skeeto/w64devkit)** è un archivio unico da scompattare, senza gestore di pacchetti: comodo se lo usi ogni tanto. E se devi solo imparare il C su Windows, anche il [Sottosistema Windows per Linux](https://learn.microsoft.com/it-it/windows/wsl/) va benissimo: installi [Ubuntu](/it/installare-wine-su-ubuntu/) con `wsl --install` e segui la parte Linux qui sotto.

## Linux

Su Debian, Ubuntu e derivate, tutto quello che serve sta in un unico pacchetto:

```bash
sudo apt update
sudo apt install build-essential gdb
```

Dentro ci sono GCC, G++, make e le librerie di sviluppo. Su Fedora:

```bash
sudo dnf install gcc gcc-c++ make gdb
```

Su Arch Linux:

```bash
sudo pacman -S base-devel gdb
```

Verifica con `gcc --version`. Non serve altro: i percorsi sono già configurati.

## macOS

Su [Mac il compilatore di serie](/it/virtualizzazione-mac-apple-silicon/) è Clang, che arriva con gli strumenti da riga di comando di Xcode. Li installi con questo comando, che apre una finestra di conferma:

```bash
xcode-select --install
```

Da lì in poi i comandi `gcc` e `g++` esistono, ma in realtà lanciano Clang. Per imparare non cambia niente.

Se ti serve proprio GCC, per esempio per un progetto che lo richiede, lo installi con [Homebrew](https://brew.sh/):

```bash
brew install gcc
```

I comandi si chiameranno `gcc-16` e `g++-16`, con il numero della versione, così non si scontrano con quelli di sistema.

## Compilare dal terminale

I comandi sono gli stessi ovunque, cambia solo il nome del file prodotto.

Compilare un singolo file C:

```bash
gcc programma.c -o programma
```

Compilare C++, chiedendo uno standard recente e tutti gli avvisi:

```bash
g++ -std=c++20 -Wall -Wextra programma.cpp -o programma
```

Eseguire il risultato:

```bash
./programma
```

Su Windows, dal Prompt dei comandi, l'eseguibile si chiama `programma.exe` e si lancia scrivendo `programma`.

![Terminale che compila un file C++ con g++ e ne esegue subito dopo il risultato](terminale-compilazione-cpp-g.png "Compilazione senza errori: nessun messaggio, e il programma parte")

Le opzioni da conoscere fin dall'inizio:

| Opzione | Cosa fa |
|---------|---------|
| `-Wall -Wextra` | Mostra gli avvisi: intercettano errori che il compilatore accetterebbe in silenzio |
| `-g` | Include le informazioni di debug, necessarie per usare il debugger |
| `-O2` | Ottimizza il codice; da usare per la versione finale, non mentre si sviluppa |
| `-std=c++20` | Fissa lo standard del linguaggio, evitando sorprese fra computer diversi |

> **Oltre tre file, lascia perdere la compilazione a mano.** Scrivi un `Makefile` oppure usa [CMake](https://cmake.org/). Ricompilare tutto a ogni modifica fa perdere tempo, e prima o poi dimentichi un file e passi mezz'ora su un errore che non c'è.

## Configurare Visual Studio Code

Visual Studio Code non ha un compilatore suo: usa quello che hai installato. Bastano due passaggi.

1. Installa l'estensione **[C/C++](https://code.visualstudio.com/docs/languages/cpp)** di Microsoft dal pannello delle estensioni. In alternativa c'è **[clangd](https://clangd.llvm.org/)**, più rapido nel completamento e negli avvisi.

2. Apri la cartella del progetto e crea un file sorgente. Premi <kbd>F5</kbd>: alla prima esecuzione l'editor chiede quale compilatore usare e genera da solo i file `tasks.json` e `launch.json` nella sottocartella `.vscode`.

Se il compilatore non compare nell'elenco, su Windows il colpevole è di solito il PATH. Controlla che `gcc --version` funzioni in un terminale nuovo, poi chiudi e riapri del tutto l'editor: legge le variabili d'ambiente solo all'avvio.

![Visual Studio Code che chiede quale compilatore usare al primo avvio del debug](vscode-selezione-compilatore-c.png "Alla prima esecuzione l'editor elenca i compilatori che ha trovato nel sistema")

Per compilare senza il debugger, il terminale integrato (<kbd>Ctrl</kbd> + <kbd>ò</kbd>) accetta gli stessi comandi visti sopra.

## Errori frequenti

**`gcc non è riconosciuto come comando`** su Windows: la cartella `bin` non è nella variabile PATH, oppure il terminale era già aperto quando l'hai aggiunta.

**`fatal error: iostream: No such file or directory`**: stai compilando un file C++ con `gcc` invece che con `g++`.

**Hai due GCC diversi**: se sul computer c'è ancora il vecchio `C:\MinGW\bin` nel PATH, togli quella riga, altrimenti Windows può trovare prima la versione vecchia. `where gcc` ti dice quale viene usata.

**`undefined reference to ...`**: la compilazione è andata a buon fine ma manca il collegamento a una libreria o a un altro file sorgente. Quando i file sono più di uno vanno indicati tutti, oppure si usa un sistema di compilazione.

**L'eseguibile non parte su un altro computer Windows**: mancano le librerie di runtime. Si risolve compilando con `-static`, che le include nell'eseguibile.

## Domande frequenti

### MinGW e MSYS2 sono la stessa cosa?

No. MinGW-w64 è l'insieme di strumenti che permette a GCC di produrre programmi per Windows; MSYS2 è l'ambiente che li distribuisce, li aggiorna e fornisce un terminale in stile Unix. Oggi si installa MSYS2 proprio per ottenere MinGW-w64 in una versione aggiornata.

### GCC o Clang: quale scegliere?

Per imparare vanno bene tutti e due. Clang è quello di serie su macOS e ha messaggi di errore più chiari, cosa che all'inizio aiuta parecchio. GCC è lo standard su Linux e lo trovi più spesso nei progetti esistenti. Molti sviluppatori li usano entrambi: compilare con due compilatori diversi fa venire fuori errori che uno solo lascerebbe passare.

### Posso ancora usare il vecchio MinGW di SourceForge?

Funziona, ma non viene più aggiornato da anni, crea solo programmi a 32 bit e resta indietro sugli standard recenti del C++. Se lo hai già installato, disinstallalo, togli `C:\MinGW\bin` dal PATH e passa a MSYS2.

### Posso compilare programmi Windows da Linux?

Sì, installando la versione incrociata di MinGW-w64, disponibile come pacchetto nelle principali distribuzioni. Si compila con `x86_64-w64-mingw32-gcc` e si ottiene un `.exe` funzionante, utile per distribuire un programma senza avere un computer Windows.

### Serve Visual Studio al posto di Visual Studio Code?

Sono due cose diverse. Visual Studio è un ambiente di sviluppo completo con il suo compilatore Microsoft (MSVC), Visual Studio Code è un editor che usa il compilatore che gli dai. Per imparare C e C++ l'editor con GCC basta ed è molto più leggero.

### Come si installa un debugger?

Su Linux e con MSYS2 si installa `gdb` insieme al compilatore, come mostrato sopra. Su macOS si usa `lldb`, già incluso negli strumenti di Xcode. In entrambi i casi Visual Studio Code lo riconosce automaticamente quando genera la configurazione di avvio.
