Algoritmi e Programmazione Avanzata

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
LINGUAGGIO DI PROGRAMMAZIONE C
Sistemi Operativi - Vi 1 Il sistema operativo LINUX Leditor vi Giorgio Di Natale Stefano Di Carlo Politecnico di Torino Dip. Automatica e Informatica.
Compilazione di Programmi C/C++
Programmazione in Java
Una applicazione complessa non può essere sviluppata in un unico file: sarebbe ingestibile! Deve necessariamente essere strutturata su più file sorgente.
Introduzione al C++ e alla programmazione ad oggetti febbraio Costruzione di applicazioni Compilazione Loading (linking) Esecuzione su Linux.
Programmazione assembler
Code::Blocks Ambiente di sviluppo.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
I linguaggi di programmazione
Dr. Giovanni Stracquadanio
Anno accademico Il preprocessore del linguaggio C.
Fondamenti di Informatica I a.a Il linguaggio C Il preprocessore La sostituzione di macro Le compilazioni condizionali Linclusione di file C.
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Corso Linux Base 2. Uso del Sistema. © Corso Linux Base - Uso del Sistema Logging In (1) Una volta partito il sistema lutente esegue la procedura.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008) Introduzione a Java: primo programma, installazione dellambiente di sviluppo, compilazione.
Installazione pacchetti sotto Linux. Linux: Installare le applicazioni Adesso che abbiamo configurato Linux vogliamo imparare a installare qualche programma.
Funzioni matematico – statistiche I comandi matematici di più comune utilizzo, applicabili a scalari e matrici, sono: Sqrt(x), che calcola la radice quadrata.
Laboratorio 1: Usare Linux. File system Il file system è la componente del sistema operativo che si occupa della gestione di file e cartelle Con laccount.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
SOFTWARE I componenti fisici del calcolatore (unità centrale e periferiche) costituiscono il cosiddetto Hardware (alla lettera, ferramenta). La struttura.
Espressioni condizionali
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Informazioni utili Per avere una distribuzione linux sul proprio pc: 1.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Programmazione modulare nel linguaggio C
IL CONCETTO DI PACKAGE Una applicazione è spesso composta di molte classi (eventualmente correlate) Un package è un gruppo di classi che costi- tuiscono.
Corso di PHP.
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
Sistemi Operativi – La shell Salvatore Campagna Politecnico di Torino Dipartimento di Automatica.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Inserire il CDROM CygWin nel lettore, aprite la directory cyg e lanciare in esecuzione (con un doppio click del pulsante sinistro del mouse sulla relativa.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
PROGRAMMARE IN C Un ambiente di sviluppo `e un software che serve per scrivere ed eseguire programmi. Generalmente integra almeno 3 funzionalita’: Editor:
Costruzione di applicazioni Compilazione Loading (linking) Esecuzione su Linux.
Di Luca Santucci 5° Programmatori
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
BIOINFO3 - Lezione 301 CGI-BIN Abbiamo visto che CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. In particolare.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Lavorare con le query Federica Scarrione 18/05/2009 fonte:
Ant Che cos’è Come si utilizza Funzionalità principali
Prof.ssa Stella Beccaria a.s. 2013_2014
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
Lezione 3 Struttura lessicale del linguaggio
Script di shell (bash).
Introduzione ai sommari j quindi premere F5 oppure fare clic su Presentazione > Dall'inizio per avviare il corso. Sulla barra dei messaggi fare clic su.
la traduzione dei programmi
1 Esercitazione Sistemi distribuiti: sistemi che risisedono su più calcolatori interconnessi da una rete di comunicazione Algoritmi distribuiti: programmi.
Introduzione a Javascript
Unix (Linux-Mac OS) Alcuni comandi. cd change working directory cd [DIRECTORY] cd entra nella directory specificata. Se non è fornita alcuna directory.
Microsoft Word Lezione 6 Riccardo Sama' Copyright  Riccardo Sama'
I FILE I File sono l’ unità base di informazione nell’interazione tra utente e sistema operativo I File sono l’ unità base di informazione nell’interazione.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Basi di Unix: introduzione Kernel il fulcro del sistema. Comunica con l’hardware (processore, memoria, disco fisso) Shell interfaccia tra l’utente e il.
1 Compilazione separata. 2 Finora abbiamo trattato solo programmi C contenuti in un unico file define/include variabili globali typedef main def F1 …
Compilazione separata
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Lezione X Laboratorio di Programmazione. Struttura di un programma Definizione classe e specifica (parziale) classe.hclasse.cpp main.cpp Specifica metodi.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
LA FILOSOFIA DEL SAS Concepito per essere facilmente accessibile.
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Transcript della presentazione:

Algoritmi e Programmazione Avanzata Il programma make Maurizio Rebaudengo, Fulvio Corno Dip. Automatica e Informatica Politecnico di Torino Il programma make

Introduzione (I) make è un programma di automazione dello sviluppo del software. Per realizzare anche piccole applicazioni in C generalmente si usano più file sorgenti, file di libreria, header file ecc., la cui gestione in fase di compilazione e linking può essere ripetitiva e lunga, nonchè può essere facile causa di gravi errori. A.A. 2001/2002 APA-makefile

Introduzione (II) UNIX consente tramite make di specificare le dipendenze tra i vari file e di aggiornare solo quei file che lo richiedono, a seguito della modifica di qualche altro file. Con il termine aggiornare si intende un’operazione di compilazione o linking, oppure la rimozione di file temporanei. Questo processo di aggiornamento può talvolta essere ripetuto innumerevoli volte durante lo sviluppo del progetto software: tramite make tale procedura è automatizzata, garantendo un notevole risparmio di tempo e salvaguardano da possibili errori. A.A. 2001/2002 APA-makefile

Make e makefile Il programma make genera i comandi per espletare la sua funzione usando un file di descrizione noto come makefile; questi comandi sono poi eseguiti dalla shell. Il makefile è essenzialmente un insieme di regole che make deve eseguire per aggiornare il programma relativo. Queste regole generalmente sono legate alla definizione delle dipendenze tra i file. make è in grado di accorgersi automaticamente se un file è stato modificato dalla data di modifica. make può essere usato per linguaggi diversi dal C, come il Fortran, l'Assembler. A.A. 2001/2002 APA-makefile

Formato di un makefile (I) Il formato di un makefile è costituito da un insieme di entry. La prima linea di ciascuna entry è detta linea delle dipendenze, mentre le successive sono dette linee di comando. La sintassi è la seguente: target: dipendenze (TAB) lista di comandi A.A. 2001/2002 APA-makefile

Formato di un makefile (II) Il formato di un makefile è costituito da un insieme di entry. La prima linea di ciascuna entry è detta linea delle dipendenze, mentre le successive sono dette linee di comando. La sintassi è la seguente: target: dipendenze (TAB) lista di comandi Quando viene modificato dipendenze devo aggiornare il target Per aggiornare il target bisogna eseguire la lista di comandi A.A. 2001/2002 APA-makefile

Formato di un makefile (III) La lista dei comandi può contenere sia comandi di compilazione che di altro tipo. Si noti che il carattere TAB a sinistra della lista dei comandi è parte integrante della sintassi del makefile: ciascuna linea di comando deve essere indentata usando un TAB. A.A. 2001/2002 APA-makefile

Formato di un makefile (IV) Quando la lista dei comandi comprende più linee, la sintassi prevede due possibili forme: target: dipendenze (TAB)comando1;comando2;comando3 target: dipendenze (TAB)comando1 (TAB)comando2 (TAB)comando3 A.A. 2001/2002 APA-makefile

Formato (V) Le linee di commento sono precedute dal carattere “#”. A.A. 2001/2002 APA-makefile

Target Il target generalmente è il nome di un file, mentre le dipendenze sono generalmente dei file collegati logicamente al target. A.A. 2001/2002 APA-makefile

Aggiornamento del target make stabilisce una gerarchia di esecuzione dei comandi di ciascuna entry osservando le relative dipendenze. make aggiorna il target se: il target non esiste, oppure la data dell'ultima modifica di almeno una delle dipendenze è più recente di quella del target. A.A. 2001/2002 APA-makefile

Esecuzione di un comando Per fare eseguire i comandi voluti è necessario specificare il nome del target: make target In questo modo make comincia a leggere l‘entry che ha il target specificato ed esegue i comandi in base alle dipendenze. Se non si specifica nessun target, make comincia a leggere la prima entry. A.A. 2001/2002 APA-makefile

Convenzione make ricerca i comandi solo nel file di nome makefile (o Makefile), che deve essere presente nella directory corrente. Se si vuole che make legga i comandi da un altro file, si usa l'opzione: make -f nomefile target A.A. 2001/2002 APA-makefile

Esempio Si vuole rendere eseguibile il programma prova compilando e linkando i seguenti file: main.c stampa.c /usr/lib/book.a (file di libreria) crea.s (file in assembler) A.A. 2001/2002 APA-makefile

Soluzione (I) prova è il target del make mentre i file oggetto e le librerie sono le sue dipendenze. A.A. 2001/2002 APA-makefile

Soluzione (II) # Makefile di prova 1 prova: main.o stampa.o crea.o /usr/lib/book.a (TAB) cc -o prova main.o stampa.o crea.o /usr/lib/book.a main.o: main.c (TAB) cc -c main.c stampa.o: stampa.c (TAB) cc -c stampa.c crea.o: crea.s (TAB) as -o crea.o crea.s fresh: pippo (TAB) rm *.o A.A. 2001/2002 APA-makefile

Commento (I) Digitando il comando: make prova make inizialmente legge l’entry di prova; però poichè le sue dipendenze sono a loro volta dei target in altre entry, prima esegue i comandi di tali entry, e poi quelli di prova. Sul video apparirà la sequenza dei comandi eseguiti. A.A. 2001/2002 APA-makefile

Commento (II) Digitando il comando make prova, il comando relativo al target fresh non viene eseguito, poichè fresh non è una dipendenza di prova. Per eseguire questo comando occorre digitare: make fresh A.A. 2001/2002 APA-makefile

Le macro All'interno del makefile è possibile definire delle macro. Sarà compito del make espandere tali macro. A.A. 2001/2002 APA-makefile

Sintassi (I) identificatore di macro=testo L'identificatore della macro può essere scritto sia in lettere maiuscole che minuscole, anche se per convenzione è scritto in lettere maiuscole. Il testo può essere : un nome di un file un nome di una directory un programma da eseguire una stringa nulla una lista di file una stringa di testo racchiusa tra doppie virgolette A.A. 2001/2002 APA-makefile

Sintassi (II) Le macro al loro interno possono contenere altre macro. Per riferirsi al contenuto di una macro all'interno del makefile, l'identificatore di macro deve essere racchiuso tra parentesi graffe (o tonde) e deve essere preceduto dal carattere  “$”. Le macro devono essere definite prima che siano usate in una linea di dipendenze. Esempio BOOK_DIR=/home/book/ MIO_LIBRO=${BOOK_DIR}/Andrea/libro A.A. 2001/2002 APA-makefile

Macro nascoste make ha delle macro interne, utilizzate per sostituire i comandi più comunemente utilizzati. Ne riportiamo alcune: CC identifica il compilatore C (cc o gcc) CFLAGS definisce i flag del compilatore C (ad es. -g) $@ identifica il target corrente $? identifica tutti i file di dipendenza che sono più recenti del target corrente. A.A. 2001/2002 APA-makefile

Esempio (I) Utilizzando le macro il makefile di esempio si può scrivere in questo modo : # Makefile di prova versione 2 CC=/usr/bin/gcc AS=/usr/bin/as OGGETTI=main.o stampa.o crea.o LIB_DIR=/usr/lib LIB_FILES=${LIB_DIR}/book.a A.A. 2001/2002 APA-makefile

Esempio (II) pippo : ${OGGETTI} ${LIB_FILES} (TAB)${CC} -o $@ ${OGGETTI} ${LIB_FILES} main.o : main.c (TAB)${CC} -c $? stampa.o : stampa.c (TAB) ${CC} -c $? crea.o : crea.s (TAB)${AS} -o $@ $? fresh : pippo (TAB) rm *.o A.A. 2001/2002 APA-makefile

Suffissi (I) make è stato scritto per facilitare lo sviluppo del software in UNIX, perciò è possibile omettere determinate informazioni predefinite. Ad esempio, make sa che il compilatore C compila file sorgenti aventi estensione .c e che genera file oggetto aventi estensione .o . Questa conoscenza è contenuta in una regola per i suffissi: make esamina il suffisso del target o quello delle dipendenze per determinare cosa fare successivamente. A.A. 2001/2002 APA-makefile

Suffissi (II) Ci sono molte regole per i suffisi predefinite nel make, la maggior parte delle quali riguarda la compilazione e il linking dei file oggetto.   Esempio: .SUFFIXES: .o .c .s linea di dipendenze, che comunica a make su quali tipi di estensioni deve eseguire le regole di suffisso A.A. 2001/2002 APA-makefile

Suffissi (III) Di default, il make riconosce (e tratta con regole implicite) i suffissi .out .a .ln .o .c .cc .C .p .f .F .r .y .l .s .S .mod .sym .def .h .info .dvi .tex .texinfo .texi .txinfo .w .ch .web .sh .elc .el Per specificare altri suffissi occorre utilizzare la clausola .SUFFIXES con il seguente formato: .SUFFIXES: suffissi_separati_da_spazi A.A. 2001/2002 APA-makefile

Regole implicite Le regole implicite possono essere definite come segue: .suffisso_file_sorg.suffisso_file_ogg: (TAB)comando i file che terminano con suffisso_file_ogg devono essere generati dai file (e dipendono da questi file) che terminano con suffisso_file_sorg e che hanno la stessa radice di nome di file mediante l'esecuzione del comando comando. A.A. 2001/2002 APA-makefile

Regole implicite (II) .c.o: (TAB)${CC} ${CFLAGS} -c $< regole di suffisso per .c e .o: comunica al make di eseguire una compilazione C per tutti i file aventi estensione .c e per i quali i relativi file oggetto non sono stati ancora aggiornati .s.o: (TAB)${AS} ${ASFLAGS} -o $@ $< direttiva analoga per sorgenti assembler. A.A. 2001/2002 APA-makefile

macro $< Svolge una funzione simile alla $? (si riferisce a tutte le dipendenze che risultano essere più recenti rispetto al target corrente ), ma può essere usata solo in una regola di suffisso. Rappresenta la dipendenza per la quale la regola di suffisso è attualmente utilizzata. A.A. 2001/2002 APA-makefile

Regole di suffisso definite dall’utente Anche l'utente può definire le proprie regole di suffisso. Ad esempio, se volessimo copiare i file oggetto in un’altra directory dopo la compilazione, dovremmo definire la seguente regola di suffisso : .c.o: (TAB)${CC} ${CFLAGS} -c $< (TAB)cp $@ backup A.A. 2001/2002 APA-makefile

Attivazione delle regole di suffisso make cerca di generare un target provando ad applicare le regole utente definisce le dipendenze senza comandi. A.A. 2001/2002 APA-makefile

Esempio # Makefile di prova versione 3 CC=/usr/bin/gcc AS=/usr/bin/as OGGETTI=main.o stampa.o crea.o LIB_DIR=/usr/lib LIB_FILES=${LIB_DIR}/book.a pippo:${OGGETTI} ${LIB_FILES} (TAB)${CC} -o $@ ${OGGETTI} ${LIB_FILES} main.o:main.c fresh:pippo (TAB)rm *.o A.A. 2001/2002 APA-makefile

Opzioni Fra le opzioni accettate dal comando make le piu' importanti sono: -f nomefile considera il makefile nomefile anziché i makefile di default -n fa vedere i comandi che verrebbero eseguiti senza però eseguirli (utile in fase di debug del makefile) A.A. 2001/2002 APA-makefile

Opzioni (II) -d stampa molte informazioni di debugging, fra cui anche le informazioni usate per decidere quali azioni compiere -p stampa il data base delle regole in uso, prima di procedere alle azioni giudicate necessarie in base alle regole es. make –p –f /dev/null stampa regole predefinite A.A. 2001/2002 APA-makefile

Opzioni (III) -r inibisce l’uso delle regole/macro di default MACRO=valore proceda come se nel makefile vi fosse una riga MACRO=valore A.A. 2001/2002 APA-makefile

File Header Occorre creare la dipendenza tra il file .h ed il file .o che si genera dai corrispondenti file .c che includono il file .h. Non bisogna creare una dipendenza tra file .h e file .c. A.A. 2001/2002 APA-makefile

Esempio OGG=main.o mergsort.o main: $(OGG) $(CC) $(CFLAGS) –o $@ $(OGG) main.o: main.c mergesort.h mergesort.o: mergesort.c mergesort.h A.A. 2001/2002 APA-makefile