owned this note
owned this note
Published
Linked with GitHub
<style>
html, body, .ui-content {
background-color: #f4f4f2;
color: #1f1f1f;
}
</style>
# ✨ LA GUIDA DEFINITIVA - AMBIENTI DI SVILUPPO
:::info
Per qualunque dubbio potete contattarmi via **[Telegram](t.me/clipwav)** all'indirizzo t.me/clipwav
:::
## 🎯 Introduzione
Questa guida ti aiuterà a configurare un ambiente di sviluppo professionale.
Ci sono diverse opzioni tra cui scegliere:
1. **Virtual Machine (VM)** - Un sistema operativo completo che gira all'interno del tuo sistema, ideale per imparare Linux e avere un ambiente isolato
2. **Windows Subsystem for Linux (WSL)** - Un modo nativo per eseguire Linux su Windows, perfetto per sviluppatori su Windows che vogliono strumenti Linux senza utilizzare troppe risorse del dispositivo
3. **Ambiente nativo** - Configurare direttamente il proprio sistema operativo, massime prestazioni, ma richiede più configurazione
4. **Servizi Cloud** - Soluzioni online senza necessità di configurazione, ottimi per iniziare velocemente o per progetti leggeri
:::info
Se non hai voglia di impostare tutte queste cose, puoi utilizzare servizi online quali:
- **GitHub Codespaces**: ambiente di sviluppo cloud gratuito con Visual Studio Code (Freemium)
- **Repl.it**: programmazione online con macchina virtuale Linux temporanea (Freemium)
- **GitPod**: workspace cloud basati su Docker (Pagamento)
- **VPS**: server virtuali privati con accesso root completo (Pagamento)
:::
## 🛠 Opzione 1: Virtual Machine
### Requisiti
- Un computer (Windows/macOS/Linux)
- [VirtualBox](https://download.virtualbox.org/virtualbox/6.1.38/VirtualBox-6.1.38-153438-Win.exe) o alternative (VMware, QEMU)
- **Virtualizzazione Hardware** abilitata nel BIOS
- ISO di una distribuzione Linux:
- [Ubuntu](https://ubuntu.com/download/desktop) (Consigliata)
- [Linux Mint](https://linuxmint.com/) (simile a Windows)
- [Pop!_OS](https://pop.system76.com/) (ottimizzata per sviluppatori)
- [Fedora](https://getfedora.org/) (più avanzata, molto stabile)
### Procedimento :books:
:::warning
**:warning: Prima di iniziare:**
Controlla che la virtualizzazione hardware sia abilitata, è **fondamentale** per far funzionare una virtual machine.
Vedi sezione [**Bonus**](#Bonus) in fondo al documento per ulteriori informazioni
:::
#### **1. Creiamo la Virtual Machine**
Come prima cosa, apriamo VirtualBox. L'interfaccia dovrebbe essere simile a quella delle immagini presenti in questo documento, in caso contrario, consiglio vivamente di eseguire una scansione antivirus.
Creiamo la nostra Virtual Machine premento il tasto **"Nuova"** come indicato dalla seguente immagine:

Una volta fatto, andiamo a dare un nome _creativo_ alla nostra Virtual Machine

Se non l'ha fatto già automaticamente VirtualBox andiamo a selezionare
come **Tipo "Linux"**
e come **Versione "Ubuntu (64-bit)"**
:::warning
:warning: se non è disponibile l'opzione **64-bit** ma solo l'opzione **32-bit**, accertati che
- **Sia installata una CPU x64.**
- **La virtualizzazione hardware sia abilitata nel BIOS.** (La CPU deve supportarla).
- Per Intel x64: **VT-x** (tecnologia di virtualizzazione Intel) e **VT-d** siano abilitati.
- Per AMD x64: **AMD SVM** (Secure Virtual Machine) sia abilitata.
- **Hyper-V** (o qualsiasi altra forma di hypervisor bare-metal) non è installato.
:::
Una volta fatto premiamo **[Successivo]**, in basso a destra

VirtualBox ci chiederà quanta **RAM** vogliamo assegnare alla nostra Virtual Machine,
noi andremo ad ignorare quello che ci consiglia il programma ed imposteremo la RAM ad almeno **4096mb (4gb)**.
:::info
:bulb: **Info**: La RAM (Random Acccess Memory) è la memoria del computer in cui vengono immagazzinate le informazioni di cui un programma ha bisogno durante l'esecuzione.
I dati vengono salvati temporaneamente e cancellati appena il computer viene spento, più RAM è disponibile più programmi il sistema operativo riuscirà ad eseguire simulaneamente.
:::
Premiamo nuovamente il pulsante **[Successivo]** in basso a destra

In questa schermata, VirtualBox ci chiederà di creare un disco fisso virtuale per la nostra VM.
_se non sai cosa stai facendo, le impostazioni predefinite vanno bene_, **non modifichiamole**
Una volta premuto il tasto **[Crea]**, premiamo il tasto **[Successivo]** fino a quando non arriviamo a questa schermata:

Selezioniamo una grandezza appropriata a quello che vogliamo fare con questa VM:
- **Se pianifichi di utilizzare questa VM solo per scrivere e compilare codice, consiglio di allocare 10gb**, altrimenti consiglio almeno **15-30gb**
Una volta selezionata la dimensione del disco, premiamo il tasto **[Crea]**
:::warning
:warning: Come diceva Antoine-Laurent, **nulla si crea nulla si distrugge tutto si trasforma**
assicurati di avere abbastanza spazio libero prima di creare il disco!
:::
:tada: **CONGRATULAZIONI!** hai creato la tua prima VM

Nello step successivo, vedremo come installare **Ubuntu**
---
#### 2. Installazione
Ora che abbiamo la nostra macchina virtuale pronta, dobbiamo installare un **sistema operativo**, proprio come un computer vero e proprio!
Come prima cosa, avviamo la nostra virtual machine selezionandola nell'elenco a sinistra e poi premendo il tasto **"Avvia"** con l'icona verde "<img src="https://i.imgur.com/fLFTeN9.png" height="24px">" presente in alto, a destra dell'**elenco strumenti**.
:::danger
:question: **Possibili errori:**
- AMD-V is disabled in the BIOS
- VT-X is disabled in the BIOS for all CPU modes
Questi errori indicano che la tecnologia di **virtualizzazione hardware** è **disabilitata**, per abilitarla si deve navigare all'interno del **BIOS**
(Il metodo per entrare nel BIOS cambia di marca in marca)
:::

Una volta avviata la VM, ci verrà mostrata questa schermata.
Come già menzionato in precedenza, la nostra VM non ha ancora un sistema operativo installato
Ricorriamo alla ISO di [Ubuntu](https://ubuntu.com/download/desktop/thank-you?version=22.04.1&architecture=amd64) scaricata in precedenza
Clicchiamo **l'iconcina a destra del menù a tendina**, questo aprirà una finestra così:

Premiamo il tasto **"Aggiungi"** in alto a destra e selezioniamo la nostra ISO
<center><img src="https://i.imgur.com/VuC5WdL.png" width=69%> <img src="https://i.imgur.com/AbmnjC7.png" width=29%></center>
<br>
Una volta selezionata la ISO, premiamo **"Scegli"** ed infine **"Avvia"**
:::warning
:warning: Appena avviata, la tastiera sarà catturata solamente ed unicamente all'interno della VM
Per tornare a controllare il PC Host (Principale) basterà premere **CTRL Destro** e guardare in basso a destra della finestra
 **- Tastiera non catturata**
:::

Questo è il **GRUB**, Gestisce tutte le opzioni di avvio disponibili per una macchina, emulata oppure nativa.
Purtroppo il **GRUB** non ha supporto per mouse, bensì può essere controllato solamente attraverso la tastiera:
- <kbd>↑</kbd> per **salire**
- <kbd>↓</kbd> per **scendere**
- <kbd>Enter</kbd> oppure <kbd>→</kbd> per **selezionare**
Selezioniamo **"Try or Install Ubuntu"**...

Ubuntu si sta avviando... Però non l'abbiamo ancora installato, difatti sta ancora girando attraverso il file iso che abbiamo selezionato in precedenza!
:::info
:books: premendo alcuni tasti (Esc, Frecce direzionali, etc.) si abiliterà la modalità **Verbose**
Questa modalità mostrerà l'output d'avvio di Ubuntu, per tornare indietro basterà premere nuovamente <kbd>Escape</kbd> oppure <kbd>↓</kbd><kbd>↑</kbd><kbd>←</kbd><kbd>→</kbd>
:::
Una volta finito il (lunghissimo, noioso e lento) caricamento, ci viene data la scelta di Provare o Installare Ubuntu

Noi ovviamente come prima cosa impostiamo la Lingua
Non cambia nulla tra inglese ed italiano, inoltre la lingua può essere cambiata anche una volta installato Ubuntu.
:::info
:books: Se avete intenzione di provare Ubuntu prima di installarlo, potrete tornare ad installare Ubuntu attraverso l'apposita icona presente sia nel **desktop** (Scrivania su Linux) che sulla **taskbar laterale**
:::
:::warning
:warning: Qualunque cosa salvata all'interno della istanza live di Ubuntu verrà **cancellata PERMANENTEMENTE** una volta spento il PC
:::
:::info
:information_source: Durante il setup, l'installer potrebbe uscire leggermente dallo schermo data la risoluzione ridotta a **800x600**, possiamo cambiarla se abbiamo scelto in precedenza "Prova Ubuntu" premendo nel bordo in alto a destra della VM → Impostazioni → **Schermi** (a sinistra) → Risoluzione (**1280x720** consigliata) → Applica (pulsante verde in alto a destra)
:::

Possiamo ora selezionare il layout di tastiera più adatto a noi, personalmente ho scelto **Italiano (Italia)**

In questa schermata scegliamo **"Installazione Normale"**
Il resto è opzionale, personalmente ho deciso di lasciare le impostazioni di default
Una volta premuto **[Avanti]**, Ubuntu ci chiederà **dove** vogliamo installare il sistema operativo

Essendo una virtual machine, possiamo selezionare la prima opzione ("**Cancella il disco e installa Ubuntu**")
:::info
Non verrà cancellato nulla dalla macchina host, i tuoi file personali sono al sicuro :thumbsup:
:::
Possiamo ora premere "**Installa**" ed "**Avanti**" per confermare la nostra scelta
Continuiamo inserendo le informazioni richieste
:::danger
Se non avete impostato la tastiera in italiano, **ricordatevi che la password verrà scritta con il layout inglese**
:::
:tada: **Congratulazioni!** hai installato Ubuntu nella tua macchina virtuale!
Non resta altro che riavviare il sistema (Quando richiesto basta premere <kbd>Enter</kbd>)
## 🚀 Opzione 2: Windows Subsystem for Linux (WSL)
### Requisiti
- Windows 10 versione 2004 o superiore (Build 19041+)
- Almeno 4GB di RAM (8GB consigliati)
### Installazione WSL 2
1. **Abilita WSL**
Apri PowerShell come amministratore e esegui:
```powershell
wsl --install
```
2. **Riavvia il computer**
3. **Installa una distribuzione Linux**
Puoi scegliere tra:
```powershell
wsl --install -d Ubuntu
wsl --install -d Debian
wsl --install -d Fedora
```
:::warning
Se ricevi errori durante l'installazione:
1. Verifica di avere Windows aggiornato
2. Controlla che la virtualizzazione sia abilitata nel BIOS
3. Esegui `sfc /scannow` come amministratore
:::
### Configurazione WSL
1. **Installa Windows Terminal** (opzionale ma consigliato)
- Scarica da Microsoft Store o da [GitHub](https://github.com/microsoft/terminal)
2. **Configura Visual Studio Code**
- Installa l'estensione "Remote - WSL"
- Apri VSCode da WSL con `code .`
## 🔧 Installazione GCC e Tools di Sviluppo
### Su Ubuntu/Debian (VM o WSL)
```bash
# Aggiorna il sistema
sudo apt update && sudo apt upgrade
# Installa build-essential (include GCC)
sudo apt install build-essential
# Tools aggiuntivi utili
sudo apt install git cmake gdb valgrind
```
### Su Fedora
```bash
sudo dnf update
sudo dnf groupinstall "Development Tools"
sudo dnf install gcc gcc-c++ gdb valgrind
```
### Su macOS
#### 1. Xcode Command Line Tools
```bash
xcode-select --install
```
#### 2. Homebrew (alternativa)
```bash
# Installa Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Installa GCC
brew install gcc
```
### Su Windows (nativo)
1. **MSYS2** (consigliato)
- Scarica da [msys2.org](https://www.msys2.org/)
- Installa e apri MSYS2
- Esegui:
```bash
pacman -Syu
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-gdb
```
2. **MinGW-w64** (alternativa)
- Scarica da [mingw-w64.org](https://www.mingw-w64.org/)
- Aggiungi il percorso alla variabile PATH
## 🔍 Troubleshooting Comune
### Virtual Machine
1. **"VT-x is not available"**
- Abilita virtualizzazione nel BIOS
- Disabilita Hyper-V su Windows
2. **Performance lente**
- Aumenta RAM allocata (min 4GB)
- Aumenta CPU cores
- Installa VirtualBox Guest Additions
### WSL
1. **Errore 0x80370102**
```powershell
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
```
2. **Problemi di memoria**
Crea file `.wslconfig` in `%UserProfile%`:
```
[wsl2]
memory=8GB
processors=4
```
### GCC
1. **"Command not found"**
- Verifica PATH
- Reinstalla build-essential
2. **Errori di compilazione**
```bash
# Verifica installazione
gcc --version
# Controlla dipendenze
ldd $(which gcc)
```
## 🎓 Risorse Aggiuntive
- [Learn Linux](https://linuxjourney.com/)
- [Git Tutorial](https://git-scm.com/book/en/v2)
- [VSCode Documentation](https://code.visualstudio.com/docs)
- [WSL Documentation](https://docs.microsoft.com/en-us/windows/wsl/)
:::info
🌟 **Pro Tip**: Per un ambiente di sviluppo professionale, considera:
- Git per il controllo versione
- Visual Studio Code o JetBrains CLion come IDE
- CMake per progetti C/C++ complessi
- Valgrind per debug memoria
- GDB per debugging avanzato
:::
---
## ⭐Bonus
#### **Come entrare nel BIOS:**
>Acer: F2 oppure CANC
ASUS: F2 per tutti i PC, F2 or DEL per le schede madri
Dell: F2 oppure F12
HP: ESC oppure F10
Lenovo: F2 oppure Fn + F2
Lenovo (Fissi): F1
Lenovo (ThinkPad): Enter + F1.
MSI: DEL per le schede madri ed i PC
Tablet Microsoft Surface: Tieni premuto il tasto "Volume Sù"
Origin PC: F2
Samsung: F2
Sony: F1, F2, oppure F3
Toshiba: F2
#### **Ottimizzazione della Virual Machine:**
Ci sono diversi fattori che possono influenzare le performance della nostra macchina virtuale, come impostazioni, hardware allocato (Core CPU, RAM, etc.) e perfino la batteria (se la state utilizzando da portatile)
Vediamo come ottimizzare la nostra macchina virtuale per renderla più "utilizzabile"
:::warning
:warning: Se la maccchina virtuale è ancora in esecuzione, **spegnamola** premendo l'opzione **"File"** in alto a destra della finestra con la nostra macchina virutale, poi **"<img src="https://i.imgur.com/JQ2M845.png" height=16> Chiudi"** ed infine selezioniamo **"<img src="https://i.imgur.com/JQ2M845.png" height=16> Spegni"**
:::
Apriamo il menù impostazioni della macchina virtuale

> Questo step è opzionale, se non lo ritieni necessario puoi saltare allo step successivo.
Nella scheda **"<img src="https://i.imgur.com/YrVl6BK.png" height=16> Generale"** (a sinistra) andiamo ad aprire il menù **"Avanzate"** (in alto)

Da qui, cambiamo sia **"Appunti condivisi"** che **"Trascina e rilascia"** in **"Bidirezoinale"**, come da immagine
Andiamo nella scheda **"<img src="https://i.imgur.com/l8ZrMXO.png" height=16> Sistema"** e cambiamo le seguenti opzioni
- Impostiamo la RAM ad un valore **maggiore o uguale a 4096mb** (se il vostro PC ha più di 4gb di RAM)

- Nella scheda **"Processore"** impostiamo i core processore ad **almeno 2**

- Nella scheda **"Accellerazione"** andiamo a cambiare l'interfaccia di paravirtualizzazione a **"KVM"**
*(questa opzione causa problemi in determinati contesti, se qualcosa non va basta ri-cambiarla in "Predefinita")*

<br>
<br>
Nella scheda **"<img src="https://i.imgur.com/HsYds3v.png" height="16"> Schermo"**, cambiamo l'opzione **"Memoria Video"** a **128mb**

<br>
Se abbiamo **Ubuntu**, dobbiamo installare i driver VirtualBox nella nostra macchina virtuale, avviamola...
Una volta avviata, premiamo il tasto **"Dispositivi"** in cima alla finestra contentente la nostra macchina virtuale, poi premiamo il tasto **"Inserisci l'immagine del CD delle Guest Additions"**

Il nostro CD virtuale dovrebbe apparire nella barra a sinistra, apriamolo e facciamo tasto destro su **"runasroot.sh"**
Dal menù contestuale, selezioniamo "Esegui come programma"
#### **Come installare GCC su MacOS**
Se hai MacOS come sistema operativo principale, non è necessaria una VM
essendo un sistema operativo basato su **UNIX**, macOS e Linux hanno molte cose in comune
:::info
:bulb: Prima di iniziare, GCC potrebbe già essere installato, puoi vederlo eseguendo `GCC --version` all'interno del terminale
:::
#### Metodo 1
**1. Installiamo i developer tools di apple**
Apriamo il Terminale (<img src="https://i.imgur.com/kmRllGC.png" height=16>) e scriviamo `xcode-select --install`
**2. Si aprirà questa finestra, premiamo "install"**
<img src="https://mac.install.guide/assets/images/ruby/install-Xcode-CLT.png">
**Fatto!**
Chiudi e riapri il Terminale (<img src="https://i.imgur.com/kmRllGC.png" height=16>) con <kbd>⌘</kbd>+<kbd>Q</kbd>, scrivi poi `GCC --version` per verificare di aver installato i developer tools correttamente
Se l'output appare così allora avete fatto!
```
Apple LLVM version <versione>
Target: x86_64-apple-darwin15.0.0
Thread model: posix
```
#### Metodo 2
**1. Installiamo [Brew](https://brew.sh/index_it)** attraverso il **Terminale** (<img src="https://i.imgur.com/kmRllGC.png" height=16>) di MacOS (presente nelle applicazioni)
```bash!
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
```
:::warning
:warning: Saranno richiesti i permessi di amministratore per installare Brew
:::
**2. Installiamo GCC**
una volta installato Brew, insatllare GCC è semplicissimo! Basterà eseguire il comando
```bash
brew install gcc
```
✌ **Fatto!**
Se avete fatto tutto correttamente, scrivendo "GCC --version" nel terminale risulterà in un output *simile* a questo
```
Apple LLVM version <versione>
Target: x86_64-apple-darwin15.0.0
Thread model: posix
```