Jump to content

Modifica Stile
Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Photo

Parte opzionale e orale... Chiariamoci le idee


  • Please log in to reply
35 replies to this topic

#1
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
Mi è rimasto ancora qualche dubbio, parto subito con le domande.

1) GNU gcc, cosa dobbiamo sapere di questo compilatore? Dobbiamo installarlo per fare un po' di pratica? Se si, esiste un simulatore in ambiente winzozz? Altrimenti devo per forza installare un linux (il che comprende anche la virtual machine)?

2) Make, capisco che il suo uso consista effettivamente nel digitare ste quattro lettere e premere invio <.<, ma per testare i nostri makefile non c'è nessun altro modo se non usarlo da prompt di GNU gcc? In altre parole, c'è una versione di Make in winzozz così faccio le mie belle prove senza imputtanarmi il sistema ç_ç?

3) argv e argc, non c'ero quando le ha spiegate, e l'uso di queste due funzioni risale al buon professor Gaeta quando facevo ingegneria elettronica ( :cray: che bei tempi che bei tempi)... Qualcuno ha tempo e voglia di farmi un veloce ripassino di come si usano? ( Se mi ricordo bene la rottura era implementare l'interfaccia utente, loro in se dovrebbero essere 4 righe di codice tirate tirate vero o_O ?)

4) Il debugger, la faccio breve, c'è un tutorial online da qualche parte o_O ? Abbiamo qualche programma sgarrato noto con cui provarlo o_O ?

5) Archiver, abbiamo qualche libreria già pronta di esempio per usarlo (tanto per imparare bene cosa devo digitare)? Non ricordo, ci sono dispense che descrivono come funziona?


Mi Pare che ci sia tutto... Rispondete numerosi, almeno avremo tutti spalle su cui piangere :drunk:



#2
Mr.Hope

Mr.Hope

    Advanced Member

  • Utente
  • PipPipPip
  • 627 posts
Allora vediamo d andare con ordine:
1)per fare un pò d prove col GCC basta avere installato il Dev-C++, andare in pannello di controllo, sistema, avanzate, variabili d'ambiente, ed aggiungere nel path la seguente riga: "set PATH=%PATH%;c:\dev-cpp\bin" (ovviamente senza apici)

2) Ank nn ho provato a lanciare un makefile da winzoz, ma penso ke dovrebbe andare tt ok (dopo ke hai eseguito ciò ke t ho scritto al passo 1)

3) T allego il file con l'esercitazione sull'argc e l'argv. (L'argc cmq sarebbe il riempimento di argv, infatti è un intero! Argv invece sarebbe un vettore di stringhe! Essi vengono usati per programmi che invocano più volte lo stesso eseguibile! qst è qll ke ho trovato sui miei appunti, mi dispiace nn poterti dire di più! Ps: se qlkno nota ke ho detto qlke castroneria, me lo faccia notare!!!)

4) Il progrmma da usare è l'insight! Su qst tema c'è già un altro topic aperto dal buon Peppeweb!

5) Se nn erro dovresti trovare tt nel file introgcc postato dal prof. Percannella su Adinf!
Immagine inviata

#3
HDM

HDM

    Advanced Member

  • Utente
  • PipPipPip
  • 405 posts
1) Non si deve installare nulla, è compreso nei file che installi quando installi l'ambiente Dev-C++ che non è altro che un'interfaccia grafica dello stesso compilatore GCC. Puoi usarlo direttamente dal Prompt dei Comandi del Dos a patto che tu inserisca nella Path del sistema la directory dove hai installato il Dev-C, come descritto in queste Slide.
2)Come sopra.
3)Se non sbaglio Percannella ha caricato sul sito di Adinf un esempio di programma che sfrutta prorprio argv e argc (uno un array di stringhe, l'altro il riempimento di questo array)
4)Debugger Insight caricato già in questa sezione del forum per quanto riguarda il C. Mentre per l'assembly c'è il debbugger assemblativo che consiste nel vedere istruzione per istruzione che succede (premendo F10 per far eseguire una singola istruzione). Non so se c'è un vero e proprio tutorial ma comunque non è difficile usarlo, ha un'interfaccia grafica abbastanza immediata.
5)Slide allegate prrr

Spero di aver risposto a tutto :D

Attached Files


Immagine inviata

#4
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts

1)per fare un pò d prove col GCC basta avere installato il Dev-C++, andare in pannello di controllo, sistema, avanzate, variabili d'ambiente, ed aggiungere nel path la seguente riga: "set PATH=%PATH%;c:\dev-cpp\bin" (ovviamente senza apici)



Ok, ho settato nel path la mia cartella di dev, ora cosa dovrei fare per provare il gcc o_O ? Dove trovo il suo prompt?


EDIT: Grazie HDM :D


4)Debugger Insight caricato già in questa sezione del forum per quanto riguarda il C. Mentre per l'assembly c'è il debbugger assemblativo che consiste nel vedere istruzione per istruzione che succede (premendo F10 per far eseguire una singola istruzione). Non so se c'è un vero e proprio tutorial ma comunque non è difficile usarlo, ha un'interfaccia grafica abbastanza immediata.


Se intendi il simulatore PCSPIM allora no problemo, è storia passata ormai :D

#5
Mr.Hope

Mr.Hope

    Advanced Member

  • Utente
  • PipPipPip
  • 627 posts

Ok, ho settato nel path la mia cartella di dev, ora cosa dovrei fare per provare il gcc o_O ? Dove trovo il suo prompt?

Start-->Programmi-->Accessori-->Prompt dei Comandi

Da li puoi lanciare tt le istruzioni in gcc (senza usare il simbolo del dollaro)
Immagine inviata

#6
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
Oh che bello, funziona tutto o_O , grazie ragazzi, mi faccio un paio di makefile :comico:

#7
HDM

HDM

    Advanced Member

  • Utente
  • PipPipPip
  • 405 posts
si GiX intendo quello del PcSpim. ^_^
Immagine inviata

#8
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
Chi mi corregge questo makefile? Mi da errore 2: impossibile trovare il file specificato...

e' basato sulla prova di esame ovviamente.

Attached Files



#9
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
Toh, mi funziona, è bastato sostituire §(CC) ai cc di cui parlavano le dispense o.o... Chi mi spiega il mistero misterioso?

E soprattutto (ho aggiornato il file) perchè i clean non funzionano?

#10
mar.co88

mar.co88

    Advanced Member

  • Utente
  • PipPipPip
  • 123 posts
ma dove è possibile trovare qualkosa... qualke spiegazione susti benedetti makefile.???

#11
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
C'è il manuale del make in inglese, ed è un bel po' pesante devo dire...

Io quel che ho fatto oggi l'ho capito un po' spulciando sulla traccia svolta di HDM e un po' su quel manuale, ma sinceramente non ho capito dove HDM abbia tirato fuori il CFLAGS o il §(CC) che sul manuale non ho proprio incontrato (per quanto riguarda -wall -o2 e -save-temps suppongo che si trovino sulle slide che parlano del GNU gcc vero?).

Marco il massimo che posso fare per aiutarti è scriverti quassù come ho ragionato sul tema di esame, se vuoi.

#12
mar.co88

mar.co88

    Advanced Member

  • Utente
  • PipPipPip
  • 123 posts
Anch io sto facedo come te dato ke le ultime lezioni le ho perse... a partire dalla traccia d esame mi confronto con con quella scritta da HDM...
quello che non mi è chiaro è cosa bisogna mettere negli OBJECTS, cos è sta CFLAGS e se effettivamene -o2 in essa sta x livello di ottimizzazione 2...
poi una volta che ho salvato in formato .txt come diavolo faccio per testarlo???

#13
mar.co88

mar.co88

    Advanced Member

  • Utente
  • PipPipPip
  • 123 posts
Ed inoltre con quale principio vado ad inserirei i file .h in quelli .o ???
come li è stato fatto:
main.o: list.h info.h
list.o: list.h info.h
info.o: info.h

#14
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts

Anch io sto facedo come te dato ke le ultime lezioni le ho perse... a partire dalla traccia d esame mi confronto con con quella scritta da HDM...
quello che non mi è chiaro è cosa bisogna mettere negli OBJECTS, cos è sta CFLAGS e se effettivamene -o2 in essa sta x livello di ottimizzazione 2...
poi una volta che ho salvato in formato .txt come diavolo faccio per testarlo???


OBJECTS non è un nome fisso, è un'etichetta che tu dai e che poi (a quanto ho capito) a tempo di esecuzione viene sostituita con il contenuto, ti faccio un esempio.

[bada, usero § al posto del dollaro per non far confusione con il software matematico, e ___TAB___ al posto di una tabulazione, perchè non riesco a farla sui forum o_O ]

Principale: main.o list.o info.o
___TAB___ §(CC) -o nomefile main.o list.o info.o


questo è un tipico target che diventera nomefile.exe alla fine della compilazione, come puoi vedere verranno fusi nell'eseguibile main.o, list.o e info.o. Posso rendere il tutto più leggibile creando un'etichetta che sostuisca tutti quei file .o in questo modo:

OGGETTI= main.o list.o info.o

Principale: §OGGETTI
___TAB___ §(CC) -o nomefile §OGGETTI


Quindi, rispondendo alla tua domanda, in OBJECTS ci metti quel che diavolo ti pare :D

CFLAGS è una opzione del make (a quanto leggo dal manuale) ed è la specifica opzione che "aggiunge altri flag al compilatore C". In pratica aggiungi dei flags dentro questa etichetta che verrà eseguita a tempo di compilazione aggiungendo a ogni istanza del make qualche altra cosa (-wall ad esempio, quando viene usato nel prompt dei comandi di gcc, attiva tutti i warning. In genere si scrive pari pari su riga di comando, ad esempio se voglio avviare il gcc con tutti i warning scrivo "gcc -wall" eccetera). A quanto sto vedendo, il make fa partire tanti gcc quanti sono i target che abbiamo fatto (in pratica crea dei file oggetto). Di seguito ti mostro una riga di comando dalla mia shell con quei flag attivi:

gcc -Wall -o2 -save-temps -c main.c -o main.o



Infine, una volta salvato il makefile in txt, ti conviene rinominarlo senza estenzione. Per default make va a cercare nella directory corrente prima il file "GNUmakefile" (senza estensione) poi "makefile" e poi "Makefile". Se non trova nessuno di questi si ferma. Nel caso volessi eseguire un makefile di nome facoltativo, c'è un'istruzione specifica, make -f nomefile.

#15
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts

Ed inoltre con quale principio vado ad inserirei i file .h in quelli .o ???
come li è stato fatto:
main.o: list.h info.h
list.o: list.h info.h
info.o: info.h


Personalmente li ho aperti col dev C++ e ho guardato gli #include, ma non so se è la tecnica migliore.

Ho scoperto che nel main ci vogliono list.h e info.h, in list soltanto list.h e in info ci vogliono info.h e bool.h (quest'ultimo include era proprio nell'info.h, mi ci sono un po' scervellato). Ho creato i target di conseguenza e ne è uscito:

main.o: list.h info.h
list.o: list.h
info.o: info.h bool.h


Una volta compilato l'eseguibile funziona perfettamente in ogni sua opzione... Pura fortuna o metodo corretto?

#16
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
HDM ha postato un link alle dispense del gcc in questo link: viewtopic.php?f=13&t=2659

Lì sopra si possono trovare bene o male tutte le flags che ci servono in CFLAGS.

#17
mar.co88

mar.co88

    Advanced Member

  • Utente
  • PipPipPip
  • 123 posts
quindi.. da quanto mi hai detto... la CFLAG puo esser vista come la #include del c (scusa se sono stato grezzo...ma in parole poverissime la vedo cosi...)... OBJECT non è altro che un etichetta(anche qui parlo in linguaggio terra terra)...poi lacosa che non mi è chiara ancora... io salvo in formato txt e poi?? come faccio per far partire il tutto??
per quanto riguarda i file .h da inserire in quelli .o .... credo che devi tener resente le include dei file .c e non quelle dei file .h... mi pare..

#18
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts

quindi.. da quanto mi hai detto... la CFLAG puo esser vista come la #include del c (scusa se sono stato grezzo...ma in parole poverissime la vedo cosi...)... OBJECT non è altro che un etichetta(anche qui parlo in linguaggio terra terra)...poi lacosa che non mi è chiara ancora... io salvo in formato txt e poi?? come faccio per far partire il tutto??
per quanto riguarda i file .h da inserire in quelli .o .... credo che devi tener resente le include dei file .c e non quelle dei file .h... mi pare..


Invece di salvare il tuo file in .txt, salvalo chiamandolo solo makefile (senza intestazione, se ce n'è una cancellala). Apri il prompt dei comandi di msdos, vai in quella cartella, digiti make e se tutto va bene ti crea il file .exe

Per gli object ci siamo, per la CFLAG invece è ancora più semplice di quanto pensi.

Quando vai a eseguire make, in realtà passi a questo programma un elenco di riferimenti a file. Make non fa altro che eseguire per ogniuno di questi file una compilazione con gcc. Ovvero "scrive" sul prompt dei comandi

gcc -c main.c -o main.o
gcc -c list.c -o list.o

eccetera, quando vai a mettere qualcosa in CFLAGS, tutto quel che metti viene riportato tra gcc e tra i file. Ad esempio, mettiamo solo -wall in CFLAGS, le nostre digitazioni di gcc diventano

gcc -wall -c main.c -o main.o
gcc -wall -c list.c -o main.o

eccetera. E' ancora più "grezzo" di un #include, è grezzo quanto un file batch (e questa autorizzo a metterla tra le perle di saggezza o_O ).

#19
mar.co88

mar.co88

    Advanced Member

  • Utente
  • PipPipPip
  • 123 posts
dal bloc notes ho salvato il make...l ho messo in una cartella.. sono andato nel pronmp del dos ma non mi fa nulla.. mi viene segnalato questo:
makefile non è riconosciuto come comado intero o esterno, un programma eseguibile o un file bruntch..

#20
GiX

GiX

    Advanced Member

  • Utente
  • PipPipPip
  • 108 posts
Hai inserito il path della cartella di dev c++ nelle variabili d'ambiente?




1 user(s) are reading this topic

0 members, 1 guests, 0 anonymous users