PDA

View Full Version : compilare in linux


barreljoker
07-11-2007, 11:55
salve ragazzi volevo sapere una cosa, devo creare un programma in c per l'università siccome ci sono molte funzioni e possibile creare due file dove in uno c'è il main e nell'altro ci sono tutte le funzioni? ad esempio un file main.c e un altro funzioni.h, si può fare? una volta creato i due file come si compilano insieme? grazie mille

ilsensine
07-11-2007, 12:04
Puoi compilare i file .o e poi linkarli insieme:
gcc -o file1.o -c file1.c
gcc -o file2.o -c file2.c
gcc -o eseguibile file1.o file2.o

Oppure creare direttamente l'eseguibile da entrambi i file:
gcc -o eseguibile file1.c file2.c

Fatti spiegare dal professore come creare un piccolo Makefile di aiuto, così lasci fare il tutto a make.

barreljoker
07-11-2007, 12:12
ok grazie mille

andbin
07-11-2007, 12:29
ad esempio un file main.c e un altro funzioni.hFaccio notare solo una cosa a livello concettuale: nei file di header non ci dovrebbero essere mai definizioni di variabili o funzioni.

71104
07-11-2007, 13:25
Faccio notare solo una cosa a livello concettuale: nei file di header non ci dovrebbero essere mai definizioni di variabili o funzioni.
per il livello a cui credo che sia barreljoker dovresti anche esplicitare la differenza tra dichiarazione e definizione :p

barreljoker
09-11-2007, 09:36
la differenza la conosco, anche se nel nei file di header non ci dovrebbero essere mai definizioni di variabili o funzioni, se le metti non cambia nulla, ho provato e funziona.
ora ho un altro problema, come posso creare un conto alla rovescia in C? uso la funzione sleep, ma il programma si ferma e poi mi stampa tutti i numeri, per fare questo ho creato un ciclo for:
for(i=10;i>0;i--)
{

printf("%d ",i);
sleep(1000);
printf("\n");
}

ma penso di aver sbagliato. sapete dirmi cosa fare?

andbin
09-11-2007, 09:47
la differenza la conosco, anche se nel nei file di header non ci dovrebbero essere mai definizioni di variabili o funzioni, se le metti non cambia nulla, ho provato e funziona.Finché 1 solo sorgente .c/.cpp include un header che contiene delle definizioni, ti va bene. ;)

ora ho un altro problema, come posso creare un conto alla rovescia in C? uso la funzione sleep, ma il programma si ferma e poi mi stampa tutti i numeri, per fare questo ho creato un ciclo for:
for(i=10;i>0;i--)
{

printf("%d ",i);
sleep(1000);
printf("\n");
}

ma penso di aver sbagliato. sapete dirmi cosa fare?Mettere fflush(stdio); prima della sleep.

barreljoker
09-11-2007, 09:54
mi da il seguente errore:
barreljoker@linux-p4u6:~/Desktop> gcc prova.c
prova.c: In function ‘main’:
prova.c:13: error: ‘stdio’ undeclared (first use in this function)
prova.c:13: error: (Each undeclared identifier is reported only once
prova.c:13: error: for each function it appears in.)
barreljoker@linux-p4u6:~/Desktop>
devo aggiungere qualche libreria?

andbin
09-11-2007, 09:56
mi da il seguente errore:
barreljoker@linux-p4u6:~/Desktop> gcc prova.c
prova.c: In function ‘main’:
prova.c:13: error: ‘stdio’ undeclared (first use in this function)
prova.c:13: error: (Each undeclared identifier is reported only once
prova.c:13: error: for each function it appears in.)
barreljoker@linux-p4u6:~/Desktop>
devo aggiungere qualche libreria?Sorry, sbagliato a digitare .... stdout invece di stdio!! :doh:

barreljoker
09-11-2007, 09:59
grazie mille, un ultima cosa, nn chiamarmi scocciatore, come posso inserire un clearscreen? il comando system("CLS") in linux nn funziona, grazie mille

edit: trovato, system("clear");
grazie mille e scusami

71104
09-11-2007, 10:13
c'è il comando clear se non erro (scritto tutto minuscolo).

edit - problema risolto vedo

barreljoker
09-11-2007, 10:56
scusate eccomi di nuovo qui, sono riuscito a fare tutto, grazie al vostro aiuto, ora volevo provare un'altra cosa, io utilizzo linux per scrivere i programmi, mi piacerebbe provarli anche su win per vedere la compatibilità, c'è un modo per creare i file exe direttamente in fase di compilazione sotto linux?
per compilare uso il comando gcc -o nomefile.o nomefile.c,
se faccio una cosa del genere: gcc -o nomefile.exe nomefile.c, e possibile?
o devo fare in un altro modo? grazie

71104
09-11-2007, 11:06
per generare eseguibili in formato .exe sotto Linux devi usare il MinGW; ovviamente tieni presente che non funzioneranno sotto Linux, devi trasferirli su Windows per farli andare (oppure usi un emulatore, tipo Wine che crede di non essere un emulatore perché i membri del team non sanno cosa vuol dire "emulatore" :asd: ).

barreljoker
09-11-2007, 11:15
sai dove posso trovarlo, su sito trovo solo la versione per win

71104
09-11-2007, 11:18
uhm, boh, forse si scarica tramite comando yum oppure apt-get oppure quello che hai... attendi qualche esperto di Linux, che io ne sono ben lungi :D

barreljoker
09-11-2007, 11:19
grazie mille, mi sei stato veramente di aiuto.

thehuge
09-11-2007, 12:56
Se usi ubuntu lo installi così:sudo apt-get install mingw32