Problema iniziale per eseguire un programma con gcc

jorja92
Ciao a tutti. Come detto ho appena iniziato a studiare programmazione, linguaggio C++, ubuntu e gcc come compilatore.
Vorrei chiedervi un piccolo aiuto per iniziare l'esecuzione del programma, perchè non riesco a capire.
Scrivo il programmino, esempio "ciao mondo" con l'editor testi di ubuntu, poi lo salvo con estensione .cc (è l'estensione che ci ha detto il prof a lezione).
Dopo apro il terminale e qui due domande: Il terminale da aprire è sempre quello che si trova in HOME, dove c'è appunto scritto TERMINAL giusto? Aperto il terminale cosa devo scrivere per far eseguire il programma? Perchè scrivendo quello che ho nelle slide di lezione, mi dice che non può eseguire il programma.... In pratica, voi cosa scrivete per eseguire il programma nel terminale? E quale terminale usate?
Grazie!

Risposte
claudio862
Una volta aperto il terminale devi andare nella directory dove si trova il tuo file .cc. Ad esempio, se l'hai salvato sul desktop il percorso del file sarà qualcosa come /home/jorja92/Scrivania/hello.cc. Una volta nella directory giusta usi GCC per compilare (con il comando "g++", non "gcc").

cd /home/jorja92/Scrivania/
g++ -std=c++98 -pedantic -Wall -Wextra hello.cc -o hello.exe
./hello.exe


Con il primo comando ti sposti nella directory.
Con il secondo compili il file "hello.cc" nel file "hello.exe" (su Linux gli eseguibili spesso non hanno estensione, puoi chiamarlo anche "hello") usando la versione 98 dello standard C++ (parametri "-std=c++98 -pedantic") abilitando tutti gli avvisi possibili (parametri "-Wall -Wextra"). Così disabiliti alcune estensioni non standard predefinite in GCC (che è meglio non usare), inoltre gli avvisi sono utili a capire eventuali problemi.
Con il terzo comando esegui il file appena compilato. "./" serve a dire "in questa directory", su Linux quando chiami un programma non viene cercato nella directory corrente, quindi devi dirlo esplicitamente.

Nota: su Ubuntu dovresti poter installare facilmente Clang. È un compilatore C/C++ alternativo a GCC, con messaggi di errore e avvisi infinitamente più chiari. Si usa nello stesso identico modo di GCC, supporta gli stessi parametri, devi solo cambiare il comando "g++" con "clang++".

jorja92
Grazie infinite per il momento ... adesso riprovo a fare tutto, e spero di riuscirci...ti dico!!!
GRAZIE!!!!!!!!!

jorja92
Scrivo qui di seguito l'errore che mi continua a uscire dal terminale, dopo essere entrata nella directory scrivania, dove ho salvato il file (il nome è hellotugu, come lo aveva chiamato il prof):


fatal error: studio.h: File o directory non esistente
compilation terminated.


Ho provato anche a non mettere -std=c++98 -pedantic, visto che uso l'ultimissa versione di ubuntu e g++, ma l'errore che esce è sempre lo stesso che si legge li...
C'è qualcosa che non va?
Forse il terminale è un altro allora?

claudio862
Mostra il codice che stai compilando. Sembra che voglia includere un file "studio.h", che non trova.
Oppure è un refuso per "stdio.h"? Nel qual caso devi installare il pacchetto "build-essential" (o "build-essentials", con la -s) dal gestore programmi.

nessuno.nobody
studio.h non esiste.
La libreria che devi includere si chiama stdio.h (STanDard Input Output)

jorja92
L'errore mi esce dopo che scrivo questo:

g++ -std=c++98 -pedantic -Wall -Wextra hellotogu.cc -o hellotogu.exe

Anche se scrivo solo:
g++ -Wall -Wextra hellotogu.cc -o hellotogu.exe (quindi non mettendo std=c++98 -pedantic, l'errore che esce è lo stesso).

claudio862
Intendo il contenuto del file hellotogu.cc.

jorja92
Ah, scusa :oops: ....
è questo il contenuto:
#include
int main (void) {
printf("Hello Tugu!\n");
return 0;
}


forse allora è in allora il problema? Doveri cambiare libreria?

claudio862
Il file si chiama "stdio.h", senza la u. Come ha detto nessuno.nobody è un acronimo per (STanDard Input Output).
Comunque quello è un sorgente C, non C++. Dovresti compilarlo con "gcc" (-std=c99). Stai studiando C o C++?

jorja92
Usiamo il C++.
Grazie comunque a tutti ... ho corretto l'errore e finalmente adesso va... GRAZIE A TUTTI per l'aiuto :)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.