prof. Nunzio Brugaletta
Sviluppo in C++: strumenti in ambiente Linux

EnneBi - Programmazione
Avanti - Indietro - Inizio

Compilazione ed esecuzione

logo GCC

Il compilatore C++ presente in Linux è, come accennato in precedenza, contenuto nella suite GCC. Si avvia normalmente con un comando, dalla shell, ma è fornita la possibilità di avviare la compilazione di un programma all'interno di Emacs stesso.

In generale è possibile lanciare l'esecuzione di una linea di comando della shell, selezionando Tools > Shell Command, digitando il comando nella Echo Area e premendo Invio. Una nuova area di lavoro visualizzerà i risultati della esecuzione del comando.

riga compilazione

Nel caso della compilazione è conveniente selezionare Tools > Compile e quindi inserire la riga di comando dal Minibuffer. La compilazione può essere lanciata anche digitando M-x compile. In ogni caso bisogna poi inserire la linea di comando.

Se, come evidenziato nell'esempio riportato, il file sorgente ha il nome prova.cpp e si vuole che il file oggetto si chiami prova, la riga di comando da digitare nel Minibuffer è:

c++ -o prova prova.cpp
  • c++ è il nome dell'eseguibile per la compilazione di programmi C++.

  • l'opzione -o serve per specificare il nome che dovrà avere il file oggetto. Se non specificato il nome sarà a.out.

  • Chiude la linea il nome del file sorgente

Se la compilazione va a buon fine con il messaggio Compilation finished, il file oggetto è stato creato correttamente nella directory del sorgente. Si può chiudere il buffer con i messaggi della compilazione, portare il punto di inserimento nuovamente nel sorgente, premere Mouse-2 sulla mode line dell'area di lavoro in modo da espandere detta area. Anche selezionando File > Remove Splits si espande la window corrente (quella con il cursore di inserimento attivo) in modo da riempire l'intero frame.

Se la compilazione non è andata a buon fine, nella window dedicata ai messaggi del compilatore, viene visualizzato l'elenco dei messaggi di errore con indicazioni sulla linea del sorgente. In questo caso il messaggio visualizzato è del tipo Compilation exited abnormally.

errori

Nell'esempio viene evidenziato che alla linea 16 è usata una variabile non dichiarata, infatti nella penultima riga visualizzata del sorgente è usata una variabile cic non dichiarata.

Non è necessario sapere quale è la linea 16 per andare a correggere l'errore, basta, nell'area di lavoro dei risultati della compilazione, premere Mouse-2 nella riga dell'errore e ci si ritrova immediatamente nella riga incriminata del sorgente.

Si può andare ad una specifica linea di un testo in editazione anche selezionando Edit > Go To > Goto Line e scrivendo il numero della linea richiesta. La mode line inoltre riporta il numero di linea su cui è posizionato il punto di inserimento (L7 dell'esempio riportato accanto).

Corretti tutti gli errori rilevati dal compilatore e salvata su disco la nuova versione del sorgente, si può procedere con una nuova compilazione.

Una volta che la compilazione del programma va a buon fine, bisogna lanciarne l'esecuzione per provare se i risultati forniti coincidono con quelli attesi. Naturalmente il lancio dell'eseguibile può essere effettuato da una shell avviata da fuori, ma può risultare più comodo effettuare tale operazione direttamente da Emacs.

avvio term

avvio bash

  • Portandosi sulla riga del Minibuffer con M-x e digitando term, si richiede di lanciare l'emulazione di terminale.

  • Confermando la riga di richiesta del tipo di terminale (viene proposta per default la bash)

finestra terminale

  • Viene avviata, in un nuovo buffer, l'emulazione di terminale richiesta

Si tratta di una emulazione che funziona esattamente come qualunque altra shell avviata esternamente. Sono, quindi, accessibili tutti i comandi e le caratteristiche della Bash (storico, completamento linea con Tab)

Si può eseguire il programma direttamente all'interno della shell dalla quale si possono mandare segnali al programma in esecuzione.

Come accennato in precedenza, Emacs, in relazione al tipo di buffer corrente, aggiunge nuove voci alla barra dei menù. Nel caso il buffer corrente contiene una emulazione di terminale, viene aggiunto il menù Signals dal quale, per esempio, selezionando Signals > QUIT si può interrompere l'esecuzione del programma avviato dal terminale o, selezionando Signals > KILL, si può interrompere la shell stessa.



Avanti - Indietro - Inizio

http://ennebi.solira.org
ennebi@solira.org