Makefile e opzioni compilatore C

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Makefile e opzioni compilatore C"

Transcript

1 Makefile e opzioni compilatore C Massimo Bernaschi massimo.bernaschi@cnr.it materiale originale di David A. Gaitros

2 Introduzione Il comando Unix make è uno degli strumenc disegnac da S. I. Fieldman degli AT&T Bell labs nel (circa) Ne esistono ormai molte versioni. L obieqvo originale di make è permerere agli sviluppatori di compilare efficientemente grandi programmi composc da molc componenc in maniera semplice. Si possono ovviamente inserire tuq i comandi necessari per la compilazione in uno script ma in questo modo vengono ricompilac ogni volta tuq i componenc. Il comando make permere di compilare solo i moduli che sono cambiac e quelli che dipendono da quesc.

3 Come funziona? Quando si lancia il comando make il sistema operacvo cerca un file con il nome makefile o Makefile. È comunque possibile specificare un nome diverso con l opzione -f. Il makefile concene una serie di dire2ve che dicono al comando make come compilare il programma ed in quale ordine. Ad ogni file è associata una lista di altri file da cui dipende. La lista è chiamata linea di dipendenze. Se uno qualsiasi dei file contenuc nella lista è stato modificato, il comando make esegue il comando che è immediatamente soro la linea di dipendenza.

4 Come funziona? Il comando make è ricorsivo. Per esempio, anche se un solo componente da cui dipende una catena di moduli viene cambiato, potrebbe comunque essere eseguita la ricompilazione (o almeno il re-link) di tuq i moduli. Quando il comando finisce la scansione del file, esegue un secondo controllo per assicurarsi che ture le dipendenze siano state risolte.

5 Un esempio (semplice) hello: main.o factorial.o hello.o g++ main.o factorial.o hello.o -o hello main.o: main.cpp g++ -c main.cpp factorial.o: factorial.cpp g++ -c factorial.cpp hello.o: hello.cpp g++ -c hello.cpp clean: rm -rf *o hello

6 Il corrispondente albero hello main.o factorial.o hello.o factorial.o factorial.cpp hello.cpp main.cpp clean

7 ComponenC di un Makefile CommenC Regole Linee di dipendenza Linee per l interprete di comandi (shell) Macro Regole di inferenza

8 CommenC Un commento viene indicato dal cararere #. TuRo ciò che viene dopo viene ignorato fino a quando non viene rilevato il cararere di fine linea. I commenc possono iniziare in qualunque punto. Esempi # # This is a comment projecte.exe : main.obj io.obj # this is also a comment.

9 Regole Le regole dicono a make quando e cosa fare per creare un file. Il formato è il seguente: Una regola deve avere un linea di dipendenze e può avere una linea di azione o un comando di shell dopo di essa. La linea di azione è eseguita se la linea di dipendenza non è aggiornata. Esempio: hello.o: hello.cpp g++ -c hello.cpp hello.o è un modulo che richiede hello.cpp come codice sorgente. Se la data di ulcma modifica di hello.cpp è più recente di hello.o, allora viene eseguita la linea successiva ed hello.cpp viene ricompilato.. Le due linee unite definiscono una regola

10 Linee di dipendenza Le linee con un : sono dere linee di dipendenza. Alla sinistra ci sono le dipendenze Alla destra ci sono i sorgenc necessari per costruire le dipendenze. Quando si lancia il comando make, vengono controllate la data e l ora in cui il target (le dipendenze) è stato creato e confrontate con quelle dei sorgenc necessari per costruirle. Se uno qualsiasi ha una data più recente, allora viene eseguita la linea comandi dopo la linea di dipendenza. Il processo di make è ricorsivo nel senso che controlla ture le dipendenze per essere sicuri che turo sia aggiornato prima di completare il processo di costruzione dei target. È importante che tu6e le dipendenze siano piazzate in ordine discendente nel makefile. Alcuni file possono avere le stesse dipendenze. Supponiamo, ad esempio che due file dipendano dal file bitvect.h. Possiamo avere la linea di dipendenza: main.o this.o: bitvect.h

11 Linee comandi (shell) Le linee indentate (devono avere un tab iniziale!) che seguono ogni linea di dipendenza sono dere linee di shell. Le linee di shell dicono a make come costruire il target. Un target può essere seguito da più linee comandi. Ogni linea deve essere preceduta da un tab. Dopo che ogni comando è eseguito, make controlla che non ci siano stac errori. Gli errori possono essere ignorac (opzione i) ma non è consigliabile.

12 Linee comandi (shell) Le linee di shell che ritornano un codice zero (0) sono state eseguite senza errori mentre un codice diverso da zero indica un errore. La prima linea comandi che ritorna un codice diverso da zero forza la terminazione del comando make che mostra l errore che ha generato la terminazione. Si può modificare questo comportamento inserendo un - di fronte al comando (ma non è consigliabile) Esempio: - gcc o my my.o mylib.o

13 Macro Viene dal Greco makros (significa grande ). In breve è un modo comparo per rappresentare qualcosa o un alias usato in the makefile Un stringa di carareri è associata con un altra (in genere) più lunga stringa Nel makefile, per espandere una macro, si deve inserire la stringa in $( ). La stringa viene espansa (per sosctuzione) durante l esecuzione del comando make.

14 Macro Esempi di macro: HOME = /home/corso/pds/spring17 CPP = $(HOME)/cpp TCPP = $(HOME)/tcpp PROJ =. INCL = -I $(PROJ) I$(CPP) I$(TCPP) Si possono definire macro anche sulla linea comandi Make HOME = /home/esame/aaa/finale Queste macro hanno la precedenza sulle corrispondenc definite nel makefile.

15 Regole di inferenza Le regole di inferenza sono un metodo per generalizzare il processo di costruzione. In sostanza è una sorta di notazione basata su wild card. Il cararere % è usato per indicare una wild card. Esempio: %.o : %.c $(CC) $(FLAGS) c $(.SOURCE) TuQ i.o files hanno dipendenze da tuq i %.c file dello stesso nome.

16 Variabili predefinite Sono disponibili variabili predefinite che fanno riferimento a parc specifiche delle regole target : dipendenze TAB commandi #comandi di shell eval.o : eval.c eval.h g++ -c eval.c $@ - Il nome del target della regola (eval.o). $< - Il nome della prima dipendenza (eval.c). $^ - I nomi di ture le dipendenze (eval.c eval.h). $? - I nomi di ture le dipendenze che sono più nuove del target

17 Phony target Phony target: Target che non hanno dipendenze. Sono usac solo come nomi per comandi da eseguire su richiesta. clean: rm $(OBJS) Per invocarlo: make clean Tipici phony target: all costruisce tuq i target di primo livello o.phony : all all: my_prog1 my_prog2.phony : clean clean: rm $(OBJS) clean cancella tuq i file che sono normalmente creac da make print stampa il listato dei sorgenc che sono stac modificac

18 DireQve Condizionali Le direqve condizionali sono: if ifeq ifneq ifdef ifndef TuQ devono essere chiusi da endif. È possibile uclizzare elif ed else. Esempio: libs_for_gcc = -lgnu normal_libs = ifeq ($(CC),gcc) else libs=$(libs_for_gcc) libs=$(normal_libs) endif #no tab at the beginning #no tab at the beginning

19 Esempio di makefile CC = gcc DIR = /home/massimo/corso/lib CFLAGS = -g -I$(DIR) -I. -c LFLAGS = -g opt: analysis.o flow.o io.o misc.o opt.o opts.o peephole.o regs.o vect.o $(CC) $(LFLAGS) -o opt analysis.o flow.o io.o misc.o opt.o opts.o peephole.o regs.o vect.o analysis.o: analysis.c analysis.h $(DIR)/misc.h $(DIR)/opt.h $(DIR)/vect.h $(CC) $(CFLAGS) analysis.c flow.o: $(DIR)/flow.c $(DIR)/flow.h $(DIR)/opt.h $(CC) $(CFLAGS) $(DIR)/flow.c io.o: $(DIR)/io.c $(DIR)/io.h analysis.h $(DIR)/misc.h $(DIR)/opt.h peephole.h $(DIR)/regs.h $(CC) $(CFLAGS) $(DIR)/io.c

20 misc.o: $(DIR)/misc.c $(DIR)/misc.h $(DIR)/opt.h $(CC) $(CFLAGS) $(DIR)/misc.c opt.o: $(DIR)/opt.c $(DIR)/opt.h $(CC) $(CFLAGS) $(DIR)/opt.c opts.o: opts.c $(DIR)/misc.h $(DIR)/regs.h $(DIR)/opt.h opts.h $(CC) $(CFLAGS) opts.c peephole.o: peephole.c $(DIR)/misc.h $(DIR)/regs.h $(DIR)/opt.h peephole.h $(CC) $(CFLAGS) peephole.c regs.o: $(DIR)/regs.c $(DIR)/regs.h $(DIR)/opt.h $(CC) $(CFLAGS) $(DIR)/regs.c vect.o: $(DIR)/vect.c $(DIR)/vect.h $(DIR)/opt.h $(CC) $(CFLAGS) $(DIR)/vect.c

21 Principali opzioni compilatore C -c: richiede la sola compilazione senza link -O: aqva l oqmizzazione (più livelli) -o name: crea un file con il nome name -g: include nell object file informazioni ucli durante il debugging -pg: include informazioni per il profiling -s: elimina i simboli (striping) -W: fornisce maggiori informazioni sul processo di compilazione (vari livelli)

22 La funzione rand() La funzione rand() della libreria C standard può essere uclizzata per generare numeri interi random nel range [0 RAND_MAX] (definito in stdlib.h. Per inizializzare il generatore random, si uclizza la srand(unsigned seed). Ovviamente partendo dallo stesso seme si rioqene esaramente la stessa sequenza di numeri pseudo-random.

23 Come cancellare un file La funzione UNIX #include <unistd.h> int unlink(const char *path) rimuove il link di path con la sua directory e decrementa il contatore nell inode. La funzione window equivalente è: BOOL DeleteFile(LPCTSTR lpfilename); ARenzione ai valori di ritorno! La funzione unix ritorna 0 in caso di successo Quella windows torna 1 in caso di successo

La seconda linea deve iniziare con un TAB (non la scritta 'TAB') e contiene cosa il programmatore scriverebbe per ottenere quel target.

La seconda linea deve iniziare con un TAB (non la scritta 'TAB') e contiene cosa il programmatore scriverebbe per ottenere quel target. Makefile - 1 Quando i progetti hanno molti file, l'uso di un makefile facilita la compilazione. Il makefile capisce quale file deve essere ricompilato e fa il link nuovamente solo di questi file. Esso

Dettagli

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) Makefile Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) 1 makefile: idea di fondo (1) Permette di esprimere dipendenze fra file

Dettagli

Compilazione e Makefile

Compilazione e Makefile Compilazione e Makefile Indice Il preprocessore Le istruzioni per il preprocessore Le MACRO L ambiente linux: alcuni comandi Editor ed il compilatore g++ I makefile Il comando make I flag Il preprocessore

Dettagli

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze)

Makefile. Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) Makefile Il file dependency system di Unix (serve ad automatizzare il corretto aggiornamento di più file che hanno delle dipendenze) 1 makefile: idea di fondo (1) Permette di esprimere dipendenze fra file

Dettagli

perror: individuare l errore quando una system call restituisce -1

perror: individuare l errore quando una system call restituisce -1 perror: individuare l errore quando una system call restituisce -1 Quando una system call (o una funzione di libreria) non va a buon fine, restituisce come valore -1 Come si fa a sapere più precisamente

Dettagli

Un codice sorgente. Introduzione alla compilazione automatica: Make e Makefile. Generazione di un programma eseguibile. Un codice sorgente

Un codice sorgente. Introduzione alla compilazione automatica: Make e Makefile. Generazione di un programma eseguibile. Un codice sorgente Un codice sorgente Introduzione alla compilazione automatica: Make e. Un codice scritto in un qualsiasi linguaggio di programmazione ad alto livello si compone di diverse parti, ognuna (preferibilmente)

Dettagli

Compilazione e Makefile

Compilazione e Makefile Compilazione e Makefile Indice Il preprocessore Le istruzioni per il preprocessore Le MACRO L ambiente linux: alcuni comandi Editor ed il compilatore gcc I makefile Il comando make I flag Il preprocessore

Dettagli

Le direttive del Preprocessore

Le direttive del Preprocessore Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza

Dettagli

Il comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli:

Il comando make. Per produrre un eseguibile da un programma C sono necessari tre passi compiuti dai seguenti moduli: Il comando make Sviluppando programmi complessi, si è spesso portati a suddividere il codice sorgente in diversi file. La fase di compilazione quindi richiede maggior tempo, anche se le modifiche apportate

Dettagli

Utilizzo di make e di Makefile per compilare programmi in C e in C++

Utilizzo di make e di Makefile per compilare programmi in C e in C++ Utilizzo di make e di Makefile per compilare programmi in C e in C++ Andrea Fontana Queste brevi note sono da considerare un appendice alla dispensa Elementi di Linguaggio C per Fisici e sono indirizzate

Dettagli

Preprocessore (cpp) Compilatore (gcc)

Preprocessore (cpp) Compilatore (gcc) Il processo di compilazione Codice sorgente Editor Sorgente preprocessato Preprocessore (cpp) Compilatore (gcc) Codice oggetto Linker (ld) Eseguibile Sis.Op. A - UNIX - Strumenti di sviluppo 1 Emacs/Xemacs

Dettagli

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza

Introduzione al C. Unità 10 Preprocessore. D. Bloisi, S. Peluso, A. Pennisi, S. Salza Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 10 Preprocessore D. Bloisi, S. Peluso, A. Pennisi, S. Salza Sommario Processo

Dettagli

Introduzione al C. Unità 10 Preprocessore

Introduzione al C. Unità 10 Preprocessore Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Introduzione al C Unità 10 Preprocessore D. Bloisi, A. Pennisi, S. Peluso, S. Salza Processo di compilazione

Dettagli

Il preprocessore. Direttiva define Direttiva include Direttiva if

Il preprocessore. Direttiva define Direttiva include Direttiva if Il preprocessore Direttiva define Direttiva include Direttiva if Il preprocessore Il preprocessore è un processore di testi che elabora il contenuto di un file sorgente prima della compilazione vera e

Dettagli

Uso di GCC da riga di comando

Uso di GCC da riga di comando Uso di GCC da riga di comando Stefano Ferrari Università degli Studi di Milano stefanoferrari@unimiit Programmazione anno accademico 2016 2017 Shell La shell è una interfaccia utente per accedere ai servizi

Dettagli

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi

Dettagli

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX 1. DEFINIZIONI sistema operativo (SO): Software che gestisce le risorse del computer (filesystem e periferiche) filesystem: Insieme dei supporti di memorizzazione.

Dettagli

Il linguaggio C. Il preprocessore...

Il linguaggio C. Il preprocessore... Il linguaggio C Il preprocessore... 1 Il preprocessore Viene invocato prima della compilazione vera e propria Esegue delle manipolazioni testuali sul file sostituisce nomi con testo elimina e inserisce

Dettagli

Esercitazione 1 la shell

Esercitazione 1 la shell Esercitazione 1 la shell Obiettivi Prendere confidenza con i comandi per la gestione del file system Utilizzare gli strumenti visti a lezione per creare tre semplici script bash File system 1/2 1. Verificare

Dettagli

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012 Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Pagina 1 di 7 Dev-C++ - Installazione Con sistema operativo Windows, potete

Dettagli

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

prova.c #include <stdio.h> char funzione(char); codice oggetto del main() prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp

Dettagli

Cenni sul preprocessore e il suo utilizzo

Cenni sul preprocessore e il suo utilizzo Alessio Bechini - Corso di - Cenni sul preprocessore e il suo utilizzo Il preprocessore: cenni Il preprocessore Storicamente, i compilatori C operavano con passaggi multipli. Il primo passaggio eseguiva

Dettagli

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma. Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

LABORATORIO DI SISTEMI OPERATIVI

LABORATORIO DI SISTEMI OPERATIVI LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Strumenti per lo sviluppo software

Dettagli

Introduzione alla programmazione nella shell di Unix 10 Maggio 2005

Introduzione alla programmazione nella shell di Unix 10 Maggio 2005 Introduzione alla programmazione nella shell di Unix 10 Maggio 2005 1 Page 1 Shell e programmazione La shell di UNIX definisce un vero e proprio linguaggio di programmazione, le cui caratteristiche principali

Dettagli

I Fondamenti del Linguaggio

I Fondamenti del Linguaggio Linguaggio C I Fondamenti del Linguaggio Linguaggio di Programmazione Linguaggio formale per la descrizione di programmi per calcolatori Sintassi vicina al linguaggio umano Se non ci fossero, bisognerebbe

Dettagli

Introduzione al linguaggio C Primi programmi

Introduzione al linguaggio C Primi programmi Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica

Dettagli

Corso Linux Base. 2. Uso del Sistema

Corso Linux Base. 2. Uso del Sistema Corso Linux Base 2. Uso del Sistema Logging In (1) Una volta partito il sistema l utente esegue la procedura di Login. Se si è installato un ambiente grafico di desktop, la procedura è gestita dall ambiente

Dettagli

Il linguaggio C. Il preprocessore...

Il linguaggio C. Il preprocessore... Il linguaggio C Il preprocessore... C : un semplice programma Il più semplice programma C è costituito da una singola funzione (main) memorizzata in un singolo file C : un semplice programma (2) DIRETTIVE

Dettagli

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Python Programmare Definire una sequenza di istruzioni che specificano come effettuare una elaborazione Le istruzioni devono essere date in un linguaggio comprensibile dal calcolatore. In generele questi

Dettagli

Analizzatori Lessicali con JLex. Giuseppe Morelli

Analizzatori Lessicali con JLex. Giuseppe Morelli Analizzatori Lessicali con JLex Giuseppe Morelli Terminologia Tre concetti sono necessari per comprendere la fase di analisi lessicale: TOKEN: rappresenta un oggetto in grado di rappresentare una specifica

Dettagli

Debug di un programma

Debug di un programma Debug di un programma Col termine Debug si intende una fase di sviluppo del software, nella quale si cerca di eliminare gli errori dal programma Due tipi di errori: Errori sintattici, rilevati sempre dal

Dettagli

Preprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi

Preprocessore. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Corso di Laboratorio di Informatica Ingegneria Clinica BCLR Domenico Daniele Bloisi Si ringrazia Raffaele Nicolussi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica,

Dettagli

Page 1. Programmazione. Shell e programmazione. File comandi (script) Introduzione alla programmazione nella shell di Unix

Page 1. Programmazione. Shell e programmazione. File comandi (script) Introduzione alla programmazione nella shell di Unix Introduzione alla programmazione nella shell di Unix 10 Maggio 2005 1 Programmazione E` possibile memorizzare sequenze di comandi all'interno di le eseguibili: Ad esempio: #!bin/bash echo hello world!

Dettagli

L ambiente UNIX/Linux. Strumenti per la programmazione C Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

L ambiente UNIX/Linux. Strumenti per la programmazione C Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino L ambiente UNIX/Linux Strumenti per la programmazione C Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino 2 Introduzione Integrated Development Environment (IDE) Code::Blocks

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati 1 Note di carratere generale Docente: Camillo Fiorentini 9 ottobre 2007 L obiettivo è quello di scrivere delle semplici funzioni per risolvere problemi di tipo

Dettagli

Ambienti Operativi: Make

Ambienti Operativi: Make DTI / ISIN / Titolo principale della presentazione 1 Ambienti Operativi: Make Amos Brocco, Ricercatore, DTI / ISIN 2 Un problema di compilazione programma.adb with Calcolatrice; use Calcolatrice; with

Dettagli

Linguaggio di Riferimento: C

Linguaggio di Riferimento: C Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall

Dettagli

IDE DevC

IDE DevC IDE DevC++ 4.9.8.1.0 Manuale utente Data ultima revisione: 22/01/2005 Fondamenti di informatica Università Facoltà Corso di laurea Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria

Dettagli

Preprocessore, linker e libreria standard

Preprocessore, linker e libreria standard Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente

Dettagli

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012

Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012 Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Pagina 1 di 8 Dev-C++ - Installazione Con sistema operativo Windows, potete

Dettagli

Introduzione al DEV C++

Introduzione al DEV C++ Introduzione al DEV C++ : Anno accademico 2006/2007 Fondamenti di informatica I Sommario 1. INTRODUZIONE... 3 2. SETUP... 5 2.1. Procedura di installazione... 5 2.2. Configurazione... 8 2.2.1. Opzioni

Dettagli

Comandi principali di Linux (1)

Comandi principali di Linux (1) Laboratorio I Comandi principali di Linux (1) Sintassi: [comando] [opzioni] [argomenti] ls mostra il contenuto di una director l versione lunga a mostra anche i files nascosti che iniziano con. t presenta

Dettagli

Classi di memorizzazione

Classi di memorizzazione Classi di memorizzazione 1 Classi di memorizzazione Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono dove (in quale parte dello

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

Directory. Le directory unix sono file.

Directory. Le directory unix sono file. Le directory unix sono file. Directory Molte system call per i file ordinari possono essere utilizzate per le directory. E.g. open, read, fstat, close. Tuttavia le directory non possono essere create con

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

Introduzione a Visual Studio 2005

Introduzione a Visual Studio 2005 Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Introduzione a Visual Studio 2005 Outline Solutions e Projects Visual Studio e il linguaggio C Visual Studio Schermata

Dettagli

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 1

Dettagli

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione

Laboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.

Dettagli

Cosa è importante: pom.xml Goal Plug-in Repository

Cosa è importante: pom.xml Goal Plug-in Repository Cos è Maven? Maven è un software usato principalmente per la gestione di progetti Java e build automation, ma è utile anche per gestire documentazione, report, dipendenze... Cosa è importante: pom.xml

Dettagli

Preprocessing, compilazione ed esecuzione. Utilizzando strumenti GNU...

Preprocessing, compilazione ed esecuzione. Utilizzando strumenti GNU... Preprocessing, compilazione ed esecuzione Utilizzando strumenti GNU... 1 Spazio di indirizzamento Come vede la memoria un programma C in esecuzione 2 32-1 0 Stack Area vuota Heap Data Text Pila di FRAME,

Dettagli

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Introduzione al C. Lez. 1 Elementi. Rossano Venturini Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni

Dettagli

COSTRUZIONE DI UN APPLICAZIONE

COSTRUZIONE DI UN APPLICAZIONE COSTRUZIONE DI UN APPLICAZIONE Per costruire un applicazione occorre: compilare il file (o i file se più d uno) che contengono il testo del programma (file sorgente) Il risultato sono uno o più file oggetto.

Dettagli

Corso di Laboratorio di Sistemi Operativi

Corso di Laboratorio di Sistemi Operativi Corso di Laboratorio di Sistemi Operativi Lezione 4 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Approfondimento su make http://http://capone.mtsu.edu/csdept/facilitiesandresources/make.htm

Dettagli

Corso di Laboratorio di Sistemi Operativi A.A

Corso di Laboratorio di Sistemi Operativi A.A Corso di Laboratorio di Sistemi Operativi A.A. 2016 2017 Lezione 12 Ivan Scagnetto ivan.scagnetto@uniud.it Nicola Gigante gigante.nicola@spes.uniud.it Dipartimento di Scienze Matematiche, Informatiche

Dettagli

Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo. A. Murli - Cacolo Scientifico a.a.

Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo. A. Murli - Cacolo Scientifico a.a. Il comando Make: : uno strumento per la compilazione ed esecuzione di software applicativo a.a.2007/2008 1 Un software si compone di diversi moduli, generalmente memorizzati in file diversi. Il programma

Dettagli

Il generatore di numeri casuali

Il generatore di numeri casuali Il generatore di numeri casuali file di libreria: stdlib.h int rand(void) La funzione restituisce un numero casuale di tipo intero compreso tra 0 e RAND_MAX (estremi compresi) Esempio: scriviamo un programma

Dettagli

Funzionalità. Il preprocessore C. Inclusione di file. Inclusione di file

Funzionalità. Il preprocessore C. Inclusione di file. Inclusione di file Il preprocessore C Ver. 2.4 Funzionalità Modifica il codice C prima che venga eseguita la traduzione vera a propria Le direttive al preprocessore riguardano: inclusione di file (#include) definizione di

Dettagli

Agenda. Agenda. Credenziali. Configurazione del Proxy (1/2) Configurazione del Proxy (2/2) Fondamenti di Informatica T2 Modulo 2

Agenda. Agenda. Credenziali. Configurazione del Proxy (1/2) Configurazione del Proxy (2/2) Fondamenti di Informatica T2 Modulo 2 Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 2 Credenziali Come si accede ai PC dei

Dettagli

Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli esercizi del 16 Maggio 2012

Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli esercizi del 16 Maggio 2012 Laboratorio di Elementi di Architetture e Sistemi Operativi Soluzioni degli esercizi del 16 Maggio 2012 Esercizio 1. 1. Creare un file liste.c che contenga il codice per la gestione delle liste visto nella

Dettagli

La direttiva #include

La direttiva #include La direttiva #include La definizione di una funzione-utente comporta alcuni passaggi: scelta e indicazione del prototipo della funzione implementazione della funzione Le funzioni della libreria standard

Dettagli

Unix e comandi di base

Unix e comandi di base Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni Unix e comandi di base Lab19 1 Unix - Shell dei comandi Es. 1 Utilizzando il comando ls Elencare a video il contenuto

Dettagli

ISTRUZIONI DEVC++ Autore: Luca Florio (luca.florio<at>polimi.it)

ISTRUZIONI DEVC++ Autore: Luca Florio (luca.florio<at>polimi.it) ISTRUZIONI DEVC++ Autore: Luca Florio (luca.floriopolimi.it) DevC++ è un ambiente di programmazione scaricabile gratuitamente che fornisce funzionalità per la creazione di applicativi in linguaggio

Dettagli

Struttura dei programmi e Variabili

Struttura dei programmi e Variabili Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita

Dettagli

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013 Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità

Dettagli

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini

Sistemi Operativi. Corso di Laurea Triennale in Ingegneria Informatica. Daniel Cesarini Sistemi Operativi Corso di Laurea Triennale in Ingegneria Informatica Esercitazione 4 Make Patch, diff SVN X server Daniel Cesarini 2011 Daniel Cesarini daniel.cesarini@for.unipi.it www.iet.unipi.it/d.cesarini

Dettagli

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define

Primo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define Primo passo: il preprocessor Source code Preprocessor Pre-processed source code Compiler Libraries Linker Executable code 1 Il preprocessore Il preprocessore compie delle manipolazioni sul codice del programma.

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main() Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep -

Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep - Lab. di Sistemi Operativi - Esercitazione n 2- - comando di ricerca: grep - 1 Ricordiamo che Le righe di /etc/passwd si presentano nella seguente forma: Username:Password:UserID:GroupID:Info:HomeDirectory:Shell

Dettagli

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore In genere il metodo alert() è usato per verificare il valore delle variabili durante la fase di correzione degli errori (debugging), fase che può essere svolta anche con l ausilio di appositi programmi

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Introduzione alle lezioni in laboratorio Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti

Dettagli

Esercitazione di Laboratorio - 4

Esercitazione di Laboratorio - 4 Esercitazione di Laboratorio - 4 Pagina del corso : http://didawiki.cli.di.unipi.it/doku.php/fisica/inf/start Oggi facciamo esercitazione su Array e matrici Puntatori (solo qualche accenno) Obiettivo:

Dettagli

Elementi di Base. Introduzione a Python.

Elementi di Base. Introduzione a Python. Elementi di Base Introduzione a Python http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Panoramica Elementi di base della sintassi (struttura,

Dettagli

Lezione 1. Programmazione. Lab di Programmazione. Linux e la sua shell: questi sconosciuti. Filippo Gaudenzi. Università degli Studi di Milano

Lezione 1. Programmazione. Lab di Programmazione. Linux e la sua shell: questi sconosciuti. Filippo Gaudenzi. Università degli Studi di Milano Lezione 1 Programmazione Lab di Programmazione Linux e la sua shell: questi sconosciuti Filippo Gaudenzi Università degli Studi di Milano Linux Linux is an Operating System (OS). Ambiente affidabile e

Dettagli

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Agenda Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 PASSO 0 Agenda Informazioni di servizio

Dettagli

Lezione 5: Introduzione alla programmazione in C

Lezione 5: Introduzione alla programmazione in C Lezione 5: Introduzione alla programmazione in C Laboratorio di Elementi di Architettura e Sistemi Operativi 4 Aprile 2012 Introduzione al C C vs. Java Java: linguaggio ad oggetti C: linguaggio procedurale

Dettagli

Primi programmi in C

Primi programmi in C Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma

Dettagli

Sistemi Operativi. Esercitazione 2 Compilazione, Makefile e Processi

Sistemi Operativi. Esercitazione 2 Compilazione, Makefile e Processi Sistemi Operativi Esercitazione 2 Compilazione, Makefile e Processi Percorso Compilazione programmi in c Makefiles Processi definizione gestione creazione Compilazione di programmi in C Compilazione e

Dettagli

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Funzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Concetti base programmazione. Antonio Gallo

Concetti base programmazione. Antonio Gallo Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,

Dettagli

BASH: Bourne Again Shell (3)

BASH: Bourne Again Shell (3) BASH: Bourne Again Shell (3) Personalizzare l ambiente bash fornisce 4 importanti strumenti 1. File speciali 2. Alias 3. Opzioni 4. Variabili.bash_profile,.bash_logout,.bashrc che sono letti da bash quando

Dettagli

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

#include <stdio.h> main() { - 1 -

#include <stdio.h> main() { - 1 - Un primo esempio di programma Ogni programma C deve contenere una funzione speciale chiamata main che indica il punto in cui inizia l esecuzione del programma. La funzione main è unica all interno di ogni

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 C-Introduzione.tex: Versione 1.0, aa 2005-2006 Linguaggi di programmazione (1) Sono linguaggi che permettono la codifica di algoritmi in modo da renderli eseguibili, direttamente

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 1 Funzioni per il

Dettagli

Fondamenti di Informatica T-1 modulo 2

Fondamenti di Informatica T-1 modulo 2 Fondamenti di Informatica T-1 modulo 2 Contenuti Parametri passati a linea di comando 2 Overview Il risultato del processo di compilazione/linking è un file eseguibile (un programma) Abbiamo visto almeno

Dettagli

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c

NOTE SULL USO DI ECLIPSE per la compilazione di programmi c Università degli Studi di Firenze - Scuola di Ingegneria Corso di Laurea in Ingegneria Elettronica e delle Telecomunicazioni Fondamenti di Informatica - Anno Accademico 2018/2019 Docente: Ing. Laura Carnevali

Dettagli

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...

Dettagli

- Controllo di flusso: for -

- Controllo di flusso: for - - Script shell - 1 - Controllo di flusso: for - 2 - Esempi d uso - Ciclo for for var in lista do comando/i che usano $var 3 Esercizio n 1 Scrivere uno script shell (shell program) di nome cercafilereg

Dettagli

Laboratorio Programmazione Anno Lezione 3

Laboratorio Programmazione Anno Lezione 3 Laboratorio Programmazione Anno 2012-2013 Lezione 3 Scripting Fino ad ora, per fare esercizi, abbiamo utilizzato l ambiente interattivo di python. È possibile creare dei file contenenti (lunghe) sequenze

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2018/2019 Argomenti del Corso Ogni lezione consta di una spiegazione assistita da slide,

Dettagli