[Progetto] Compilazione in C

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

[Progetto] Compilazione in C

Messaggio da Slipo92 »

Salve a tutti ragazzi..  (good)
con windows mi piaceva tanto creare dei programmini in linguaggio C per tenere sempre fresche le nozioni assimilate il classe alle superiori.. [ora mi trovo a fare Ingegneria Informatica perchè voglio fare il programmatore  :o].. Mi trovo davanti ad un problemino.. da quando ho detto basta a windows e i suoi problemi e ho installato ubuntu.. ho la versione 11.04.. mi domandavo.. come posso fare per compilare un programma.!? esiste per caso qualche interfaccia (Es.: DEV - C++ ; VirtualC; ...) per ubuntu.!? oppure basta che installo Gcc o G++ e eseguo l'ogetto dal terminale.!? il mio problema è che se anche compilo con un "blocknote" non ho le librerie.. quindi programmare diventa estremamente seccante.. qualcuno può aiutarmi.!?  ;D
Grazie in anticipo Andrea  ;)
AMPLIAMOLO Glaps
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] Compilazione in C

Messaggio da difesaparcosempione »

installati build-essentials e le man pages.
  (nono) nb: non compili con l'editor !! ( blocknote ... )
ciao
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

ho letto di eclipse.. e anche di CODE::BLOCKS.. sono programmi che aiutano la programmazione giusto.!? Quale mi consigli.!?
AMPLIAMOLO Glaps
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] Compilazione in C

Messaggio da difesaparcosempione »

conosco appena apena eclipse, ma penso che anche altri vadano bene.
Cmq se hai fretta di iniziare anche adesso  eclipse va benissimo !!
ciao
:)
Avatar utente
erPicci
Prode Principiante
Messaggi: 156
Iscrizione: martedì 26 aprile 2011, 12:07

Re: [Progetto] Compilazione in C

Messaggio da erPicci »

Suggerisco di iniziare col fare un po' di ordine, dando alle cose il loro nome :)
Dunque, per scrivere il codice puoi utilizzare un editor testuale (gedit, kwrite, emacs... e chi più ne ha più ne metta), oppure un IDE (Dev C++, Code::blocks, Eclipse... e chi più ne ha più ne metta anche qui).
Per compilare userai probabilmente gcc. Poi, che tu voglia usarlo attraverso la linea di comando (che personalmente ti consiglio, almeno all'inizio) oppure attraverso un IDE (gli IDE altro non fanno che richiamare un compilatore, non sono essi stessi compilatori) è indifferente. Solo che nel primo caso sarai tu a richiamarlo da linea di comando (o con un makefile se preferisci).
se anche compilo con un "blocknote" non ho le librerie
suppongo che per tutti ci sia un inizio :)
I "blocknote" (editor di testo) chiaramente non compilano proprio niente, sono i compilatori a compilare. Per quanto riguarda le librerie, sei tu a dover dire al compilatore di includerle. Nella maggior parte dei casi ti basta usare la direttiva #include nel sorgente. Per linkare librerie, invece, dovrai passare tu l'apposito comando al compilatore. Lavoro un po' noioso, chiaramente, ma se vuoi fare il programmatore ti fa bene prendere la mano con queste cose: imparando a dare i comandi corretti tu in prima persona ti dovrebbe essere più facile capire cosa sta succedendo nella macchina. Mi sembra di aver capito che sei abbastanza nuovo di Linux, quindi un bel rodaggio sul terminale non può che farti bene ;).
Per lo stesso motivo ti consiglio di imparare a usare la combinazione editor di testo-linea di comando (almeno a livello didattico, poi quando si tratterà di progetti più complicati vedrai tu quale strada fa al caso tuo).
(Non me ne abbiano a male i fan degli IDE  ;D ma quando facevo il primo anno di informatica io ho visto più di qualcuno prendere voti bassi semplicemente perché Dev, non essendo stato ben configurato, faceva cose strane e falsava la fase di debug).
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

erPicci ha scritto: Per compilare userai probabilmente gcc. Poi, che tu voglia usarlo attraverso la linea di comando (che personalmente ti consiglio, almeno all'inizio) oppure attraverso un IDE (gli IDE altro non fanno che richiamare un compilatore, non sono essi stessi compilatori) è indifferente. Solo che nel primo caso sarai tu a richiamarlo da linea di comando (o con un makefile se preferisci).
Potresti darmi una mano a riguardo.!? facciamo che io scrivo con gedit il mio programmino.. da terminale ho fatto così:

Codice: Seleziona tutto

cd ~/workspace/
gedit Somma.c

Mi apre la finestra scrivo e salvo.. Ecco questo anche da terminale come lo eseguo.!? É compilato.!?
Ultima modifica di Slipo92 il giovedì 13 ottobre 2011, 16:23, modificato 1 volta in totale.
AMPLIAMOLO Glaps
spider-net
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: martedì 11 maggio 2010, 17:38
Desktop: CWM
Distribuzione: FreeBSD 12.1

Re: [Progetto] Compilazione in C

Messaggio da spider-net »

Slipo92 ha scritto: Cmq ti sarei grado se magari in privato mi dai un pò di chiarimenti per quanto riguarda la stesura/compilazione/esecuzione/ e altro da terminale.. che io nn ho trovato guide chiare in rete..
1) Per la stesura basta un qualunque editor di testo;
2) Per la compilazione dai dal terminale questo comando (dopo aver installato build-essentials)

Codice: Seleziona tutto

gcc nomeSorgente.c -o nomeEseguibile
3) Esecuzione, sempre da terminale ti sposti nella cartella dove hai compilato l'eseguibile (con il comando cd http://wiki.ubuntu-it.org/AmministrazioneSistema/ComandiBase) e dai il comando

Codice: Seleziona tutto

./nomeEseguibile
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

Ho modificato la risposta prima.. puoi commentare quella per favore.. cmq credo di aver capito.. ora vedo..
AMPLIAMOLO Glaps
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

spider-net ha scritto:
Slipo92 ha scritto: Cmq ti sarei grado se magari in privato mi dai un pò di chiarimenti per quanto riguarda la stesura/compilazione/esecuzione/ e altro da terminale.. che io nn ho trovato guide chiare in rete..
1) Per la stesura basta un qualunque editor di testo;
2) Per la compilazione dai dal terminale questo comando (dopo aver installato build-essentials)

Codice: Seleziona tutto

gcc nomeSorgente.c -o nomeEseguibile
3) Esecuzione, sempre da terminale ti sposti nella cartella dove hai compilato l'eseguibile (con il comando cd http://wiki.ubuntu-it.org/AmministrazioneSistema/ComandiBase) e dai il comando

Codice: Seleziona tutto

./nomeEseguibile
mi da questo il terminale:

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
andrea@slipo:~/workspace$ gcc Somma.c -o Somma
gcc: Somma.c: File o directory non esistente
gcc: no input files
andrea@slipo:~/workspace$ 
AMPLIAMOLO Glaps
spider-net
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: martedì 11 maggio 2010, 17:38
Desktop: CWM
Distribuzione: FreeBSD 12.1

Re: [Progetto] Compilazione in C

Messaggio da spider-net »

Slipo92 ha scritto:
spider-net ha scritto:
Slipo92 ha scritto: Cmq ti sarei grado se magari in privato mi dai un pò di chiarimenti per quanto riguarda la stesura/compilazione/esecuzione/ e altro da terminale.. che io nn ho trovato guide chiare in rete..
1) Per la stesura basta un qualunque editor di testo;
2) Per la compilazione dai dal terminale questo comando (dopo aver installato build-essentials)

Codice: Seleziona tutto

gcc nomeSorgente.c -o nomeEseguibile
3) Esecuzione, sempre da terminale ti sposti nella cartella dove hai compilato l'eseguibile (con il comando cd http://wiki.ubuntu-it.org/AmministrazioneSistema/ComandiBase) e dai il comando

Codice: Seleziona tutto

./nomeEseguibile
mi da questo il terminale:

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
andrea@slipo:~/workspace$ gcc Somma.c -o Somma
gcc: Somma.c: File o directory non esistente
gcc: no input files
andrea@slipo:~/workspace$ 
Sicuro che il file si chiami proprio Somma.c?

EDIT: infatti

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
Somma è diverso da Somma.c
Ultima modifica di spider-net il giovedì 13 ottobre 2011, 16:44, modificato 1 volta in totale.
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

spider-net ha scritto: Sicuro che il file si chiami proprio Somma.c?

EDIT: infatti

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
Somma è diverso da Somma.c

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
andrea@slipo:~/workspace$ gcc Somma -o Somma
Somma: file not recognized: File truncated
collect2: ld returned 1 exit status
andrea@slipo:~/workspace$ ./Somma
bash: ./Somma: File o directory non esistente
scusa l'ignoranza e l'insistenza ma la risposta del terminale è stata questa.. che sbaglio ora.!?
AMPLIAMOLO Glaps
spider-net
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 432
Iscrizione: martedì 11 maggio 2010, 17:38
Desktop: CWM
Distribuzione: FreeBSD 12.1

Re: [Progetto] Compilazione in C

Messaggio da spider-net »

Slipo92 ha scritto:
spider-net ha scritto: Sicuro che il file si chiami proprio Somma.c?

EDIT: infatti

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
Somma è diverso da Somma.c

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
andrea@slipo:~/workspace$ gcc Somma -o Somma
Somma: file not recognized: File truncated
collect2: ld returned 1 exit status
andrea@slipo:~/workspace$ ./Somma
bash: ./Somma: File o directory non esistente
scusa l'ignoranza e l'insistenza ma la risposta del terminale è stata questa.. che sbaglio ora.!?
I sorgenti in C devono avere estensione .c
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

Potresti specificarmi meglio dove sbaglio.!? non è andando a tentoni che imparo..  ???
AMPLIAMOLO Glaps
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] Compilazione in C

Messaggio da difesaparcosempione »

gcc somma.c -o somma.out
ok ?
ciao
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

Niente ragazzi sono scemo.. credo che mi arrendo.. allora su:

Codice: Seleziona tutto

/home/andrea/ 
ho salvato il file "Somma".. vorrei capire dove e cosa sbaglio.. .-. nn è che c'è qualke errore e nn me lo verifica.!? date un'occhiata al mio terminale:

Codice: Seleziona tutto

andrea@slipo:~$ gcc Somma.c -o Somma.out
gcc: Somma.c: File o directory non esistente
gcc: no input files
andrea@slipo:~$ 
il file l'ho creato con gedit e l'ho salvato quì da terminale.. il programma è questo:

Codice: Seleziona tutto

/*****************************************************************************/
/*									     */
/*                            ..Benvenuto caro amico.. 		             */
/*                                                                           */
/*****************************************************************************/

#include <stdlib.h>
#include <stdio.h>

int a=0, b=0;
main ()
{
	Stampa:	
	printf("..Benvenuto caro amico..");
	Ciclo:
	++a;
	if (a == 100)
	{
		printf(" ");
		Ciclo2:	
		++b;
		if (b == 100)
		{
			goto Stampa;
			b=0;
		}	
		else
		goto Ciclo2;
	}
	else
	goto Ciclo;

}
		
cerco di fare il lampeggio della frase con ritardo fatto da un contatore.. nn ci arrivo proprio..
AMPLIAMOLO Glaps
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] Compilazione in C

Messaggio da difesaparcosempione »

Slipo92 ha scritto: Niente ragazzi sono scemo.. credo che mi arrendo.. allora su:

Codice: Seleziona tutto

/home/andrea/ 
ho salvato il file "Somma".. vorrei capire dove e cosa sbaglio.. .-. nn è che c'è qualke errore e nn me lo verifica.!? date un'occhiata al mio terminale:

Codice: Seleziona tutto

andrea@slipo:~$ gcc Somma.c -o Somma.out
gcc: Somma.c: File o directory non esistente
gcc: no input files
andrea@slipo:~$ 
il file l'ho creato con gedit e l'ho salvato quì da terminale.. il programma è questo:

Codice: Seleziona tutto

/*****************************************************************************/
/*									     */
/*                            ..Benvenuto caro amico.. 		             */
/*                                                                           */
/*****************************************************************************/

#include <stdlib.h>
#include <stdio.h>

int a=0, b=0;
main ()
{
	Stampa:	
	printf("..Benvenuto caro amico..");
	Ciclo:
	++a;
	if (a == 100)
	{
		printf(" ");
		Ciclo2:	
		++b;
		if (b == 100)
		{
			goto Stampa;
			b=0;
		}	
		else
		goto Ciclo2;
	}
	else
	goto Ciclo;

}
		
cerco di fare il lampeggio della frase con ritardo fatto da un contatore.. nn ci arrivo proprio..
non ti arrendere, da gedit salvi con path oppure nella stessa dir ?
Se salvi nelle stessa dir , uscito da gedit prova a dare questi cmd
pwd
e
ls -l
ciao
:)
Avatar utente
Slipo92
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 327
Iscrizione: domenica 9 ottobre 2011, 2:16
Località: Messina

Re: [Progetto] Compilazione in C

Messaggio da Slipo92 »

difesaparcosempione ha scritto: da gedit salvi con path oppure nella stessa dir ?
il procedimento che faccio io è:

Codice: Seleziona tutto

andrea@slipo:~$ gedit Somma <invio>
dopo di che mi si apre l'editor.. scrivo e faccio salva.
arrivato a questo punto da terminale faccio

Codice: Seleziona tutto

andrea@slipo:~$ gcc Somma.c -o Somma.out
e la risposta è:

Codice: Seleziona tutto

gcc: Somma.c: File o directory non esistente
gcc: no input files
....
Se salvi nelle stessa dir , uscito da gedit prova a dare questi cmd
pwd
e
ls -l
ciao
:)

Codice: Seleziona tutto

andrea@slipo:~$ pwd
/home/andrea

Codice: Seleziona tutto

andrea@slipo:~$ ls -l
totale 2640
drwxr-xr-x 2 andrea andrea    4096 2011-10-08 17:46 Documenti
-rw-r--r-- 1 andrea andrea     179 2011-10-08 16:58 examples.desktop
drwxr-xr-x 2 andrea andrea    4096 2011-10-09 03:12 Immagini
drwxr-xr-x 2 andrea andrea    4096 2011-10-08 17:46 Modelli
drwxr-xr-x 2 andrea andrea    4096 2011-10-08 17:46 Musica
drwxr-xr-x 2 andrea andrea    4096 2011-10-08 17:46 Pubblici
drwxr-xr-x 2 andrea andrea    4096 2011-10-12 18:46 Scaricati
drwxr-xr-x 2 andrea andrea    4096 2011-10-13 18:25 Scrivania
-rw-r--r-- 1 andrea andrea     662 2011-10-13 18:25 Somma
drwxrwxr-x 2 andrea andrea    4096 2011-10-11 08:01 Ubuntu One
drwxr-xr-x 2 andrea andrea    4096 2011-10-08 17:46 Video
drwxr-xr-x 3 andrea andrea    4096 2011-10-13 18:28 workspace
c'è il file.. nn capisco se sbaglio io qualcosa.. .-.
AMPLIAMOLO Glaps
Avatar utente
difesaparcosempione
Rampante Reduce
Rampante Reduce
Messaggi: 6031
Iscrizione: giovedì 27 luglio 2006, 19:06
Località: Torino
Contatti:

Re: [Progetto] Compilazione in C

Messaggio da difesaparcosempione »

non vedo Somma.c
ecco il problema ... vedi dove e come lo salvavi !
ciao a domani!

(b2b)
ciao
Avatar utente
erPicci
Prode Principiante
Messaggi: 156
Iscrizione: martedì 26 aprile 2011, 12:07

Re: [Progetto] Compilazione in C

Messaggio da erPicci »

Non ti scoraggiare, vedrai che con un po' di pazienza andrà tutto bene.

Dunque, spider-net aveva già dato la risposta, ma temo che sia passata inosservata quindi la "riesumo": quando apri gedit (dopo aver usato il comando "cd") tu usi questo comando:

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma
quando invece dovresti inserire

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma.c
Nota il ".c".
Detto in parole povere, è come se avessi detto a gedit di aprire un file e salvarlo con in nome di "Somma" (senza estensione). Invece tu vuoi che abbia estensione ".c", quindi quando chiami gedit devi dirgli "Somma.c". (Probabilmente questo è successo perché eri abituato a lavorare con Windows, che di default "nasconde" le estensioni dei file conosciuti).

Riassunto passo passo (spero che ti sia utile), assumendo che tu sia già nella cartella "workspace":

Codice: Seleziona tutto

andrea@slipo:~/workspace$ gedit Somma.c
andrea@slipo:~/workspace$ gcc -o Somma Somma.c
andrea@slipo:~/workspace$ ./Somma
PS: ho letto rapidamente il sorgente che hai postato, come consiglio generale eviterei di usare i goto: sono dei salti incondizionati (in genere la gente non li vede di buon occhio :P), è preferibile utilizzare iterazioni come for, while o do...while. Ma questa è una cosa secondaria al momento.

PPS: forse lo sai già, ma il comando gcc accetta anche parametri opzionali, come -o, -Wall... penso valga la pena di spenderci due parole:
al comando gcc basta solo il nome del file che vuoi compilare (es "gcc Somma.c"), ma se vuoi puoi specificare opzioni come il nome del file di output (che su winzozz chiameresti "il .exe"), usando l'opzione -o nomeoutput (es "gcc -o mioNome Somma.c" produce un file chiamato "mioNome", senza estensione, che puoi eseguire da linea di comando con "./mioNome". Se non specifichi un nome di output il compilatore ne userà uno di default, che nel tuo caso sarà una cosa tipo "Somma.out"). Un altro parametro che potrebbe presto interessarti è -Wall (Warning All: mostra tutti gli avvisi quando il compilatore trova qualcosa che non va nel codice. Utile per il debug. Si usa con "gcc -Wall Somma.c"). Puoi anche combinare le opzioni inserendone più di una ("gcc -o nomeoutput -Wall Somma.c")...
AlexDiste
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2299
Iscrizione: martedì 18 agosto 2009, 9:25

Re: [Progetto] Compilazione in C

Messaggio da AlexDiste »

Probabilmente questo è successo perché eri abituato a lavorare con Windows, che di default "nasconde" le estensioni dei file conosciuti
E se è per questo Linux non necessita nemmeno delle estensioni dato che il tipo di file è indicato dal magic number, anzi quindi non è forse questa una storpiatura del modo di usare linux?
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti