<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: ![](https://i.imgur.com/c8jz3NL.png) Una volta fatto, andiamo a dare un nome _creativo_ alla nostra Virtual Machine ![](https://i.imgur.com/5CXos7e.png) 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 ![](https://i.imgur.com/Gd9mwzx.png) 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 ![](https://i.imgur.com/zQN1vVZ.png) 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: ![](https://i.imgur.com/FHixk3v.png) 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 ![](https://i.imgur.com/A2SChRO.png) 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) ::: ![](https://i.imgur.com/oUQ79Cp.png) 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ì: ![](https://i.imgur.com/XSvWlAl.png) Premiamo il tasto **"Aggiungi"** in alto a destra e selezioniamo la nostra ISO <center><img src="https://i.imgur.com/VuC5WdL.png" width=69%>&nbsp;&nbsp;<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 ![](https://i.imgur.com/5t1exc3.png) **- Tastiera non catturata** ::: ![](https://i.imgur.com/BgNHnPb.png) 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"**... ![](https://i.imgur.com/xtUEacW.png) 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 ![](https://i.imgur.com/AL58AGd.png) 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) ::: ![](https://i.imgur.com/E4EkrKP.png) Possiamo ora selezionare il layout di tastiera più adatto a noi, personalmente ho scelto **Italiano (Italia)** ![](https://i.imgur.com/RRBdNjr.png) 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 ![](https://i.imgur.com/oHq6d7b.png) 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 ![](https://i.imgur.com/a2NR2U6.png) > 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) ![](https://i.imgur.com/HIWbJzl.png) 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) ![](https://i.imgur.com/St4U0lU.png) - Nella scheda **"Processore"** impostiamo i core processore ad **almeno 2** ![](https://i.imgur.com/22F3s99.png) - 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")* ![](https://i.imgur.com/JvSh5hm.png) <br> <br> Nella scheda **"<img src="https://i.imgur.com/HsYds3v.png" height="16"> Schermo"**, cambiamo l'opzione **"Memoria Video"** a **128mb** ![](https://i.imgur.com/fqYId72.png) <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"** ![](https://i.imgur.com/Lk38sjy.png) 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 ```