Lezione 10: Librerie e compilazione separata



Похожие документы
Dynamic Linking. Introduzione Creazione di una libreria dinamica Uso di una libreria dinamica

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

Librerie. Laboratorio di Informatica Antonio Monteleone 28

Makefile. Un target in generale e' un file. Usando.PHONY: target specifichiamo a make che il target non e' un file

Funzioni in C. Violetta Lonati

Header. Unità 9. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Sistema operativo: Gestione della memoria

ToolChain: Come Generare Applicazioni in Linguaggio Macchina

Introduzione a Dev-C++

NOZIONI BASE PER ESERCITAZIONI

Programmare in Java. Olga Scotti

Omnia Web Timesheet. Manuale utente

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

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Il compilatore Dev-C++

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Office 2007 Lezione 09. Contenuto riutilizzabile

Esercizio: gestione di un conto corrente

Tale attività non è descritta in questa dispensa

GHPPEditor è un software realizzato per produrre in modo rapido e guidato un part program per controlli numerici Heidenhain.

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Getting Started. Walter Cazzola. Dipartimento di Informatica e Comunicazione Università degli Studi di Milano

Inizializzazione, Assegnamento e Distruzione di Classi

System Center Virtual Machine Manager Library Management

Compilazione separata. Come realizzare correttamente un piccolo progetto su piu' file

Università degli Studi di Messina

2015 PERIODO D IMPOSTA

7.4 Estrazione di materiale dal web

Office 2007 Lezione 02. Le operazioni più

GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL GUIDA RAPIDA PER LA COMPILAZIONE DELLA SCHEDA CCNL

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

Schede ADI ADP ADEM Prestazioni aggiuntive MMG. - Manuale - Data Solution Provider s.r.l.

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Il web server Apache Lezione n. 3. Introduzione

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Product Shipping Cost Guida d'installazione ed Utilizzo

Allocazione dinamica della memoria - riepilogo

GLUI: GLUT-based User Interface

PROGRAMMA GESTIONE TURNI MANUALE UTENTE. Programma Gestione Turni Manuale Utente versione 1.1

ISTRUZIONI PER L INSTALLAZIONE DI MINGW

Come costruire una presentazione. PowerPoint 1. ! PowerPoint permette la realizzazione di presentazioni video ipertestuali, animate e multimediali

Strutturazione logica dei dati: i file

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Università degli Studi di Ferrara - A.A. 2014/15 Dott. Valerio Muzzioli ORDINAMENTO DEI DATI

Gestione Risorse Umane Web. Gestione della foto in stampa unione. Versione V01

DevC++ vers Manuale d uso

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Printer Driver. Questa guida descrive l installazione dei driver stampante per Windows Vista e Windows XP.

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

monitoraggio dei locomotori via Internet

Panoramica: che cosa è necessario

Editing e gestione delle views per il modulo Landing Page Espositore

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Linguaggio C. Fondamenti. Struttura di un programma.

Corso di Sistemi di Elaborazione delle informazioni

Airone Gestione Rifiuti Funzioni di Esportazione e Importazione

FtpZone Guida all uso

File Server Resource Manager (FSRM)

PORTALE CLIENTI Manuale utente

Arduino: Programmazione

Uso di librerie preconfezionate. pezzi di programma già scritto da altri; di solito ben collaudati;

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Database. Si ringrazia Marco Bertini per le slides

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007

Capitolo 4 Pianificazione e Sviluppo di Web Part

Sicurezza dei file Le protezioni nei programmi

CREARE UNA LIBRERIA IN C

PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Il tipo di dato astratto Pila

UNIEMENS Manuale consultazione DM10 Virtuale e DM10VIG nel sito

Linguaggi e Paradigmi di Programmazione

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Gestione dei File in C

Consiglio regionale della Toscana. Regole per il corretto funzionamento della posta elettronica

Università di L Aquila Facoltà di Biotecnologie Agro-alimentari

Approccio stratificato

Modulo 3 - Elaborazione Testi 3.5 Stampa unione

Architetture Applicative

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

Settaggio impostazioni tema. Cliccando nuovamente su aspetto e poi su personalizza si avrà modo di configurare la struttura dinamica della template.

Il File System. Il file system

Транскрипт:

Lezione 10: Librerie e compilazione separata Laboratorio di Elementi di Architettura e Sistemi Operativi 16 Maggio 2012 Calendario della parte finale del corso Mer 23 Maggio ultima lezione sul C Gio 24 Maggio ore 9:30-11:30, Aula D: lezione di teoria sull architettura LC-3 Mer 31 Maggio lezione di laboratorio sull architettura LC-3 Mer 6 Giugno Non c è lezione Mer 13 Giugno consegna dei progetti da svolgere per l esame Calendario (provvisorio) degli esami: Mer 27 Giugno ore 9.30 Mer 11 Luglio ore 9.30 Librerie e compilazione separata Suddivisione del codice in più file Tutti i programmi che abbiamo visto finora erano composti da un unico file.c Nel caso di programmi più grandi è conveniente suddividere il codice in più file: migliore suddivisione e organizzazione del codice facilità di manutenzione e correzione degli errori possibilità di riutilizzare il codice per progetti diversi Il linguaggio C e l ambiente Unix forniscono tre strade per suddividere il codice: 1. inclusione diretta di file sorgente e compilazione unica; 2. inclusione di header file e compilazione separata; 3. creazione di librerie statiche o dinamiche. 1

Inclusione diretta di file sorgente Effettuata dal preprocessore mediante la direttiva #include "mylib.c" Prima della compilazione il preprocessore inserisce il codice contenuto in miofile.c nel programma La compilazione si fa normalmente richiamando il compilatore sul file contenente il main: gcc main.c -o main È il metodo più semplice ma meno efficiente: la modifica di uno solo dei file richiede la ricompilazione completa di tutto il programma. #include "mylib.c" Header file e compilazione separata Anziché includere tutto il sorgente si può includere un header file: è un file con estensione.h contiene solamente: inclusioni di altri header file definizione di strutture e di tipi (typedef) prototipi di funzioni si usa la direttiva Il codice delle funzioni va scritto in un file.c separato: che deve includere l header! Compilazione e linking devono essere fatti separatamente: gcc -c mylib.c gcc -c main.c gcc -o main main.o mylib.o La modifica di uno dei file richiede di ricompilare il file oggetto corrispondente e di rifare il linking. 2

// mylib.h void aggiungi(int *somma, int n); Le librerie Le librerie!"#"$!"#" La fase di Linking è l ultimo passaggio nella creazione di un eseguibile:!"!"!!!"### aggiunge ai file oggetto il codice delle librerie esterne necessarie per il programma!"#$%&'%$%!"#$%&()%** (#1!2)%/#"- (#1!2)%/#"- )2.3-"!"!"!!!"###!"#$%&( +*#",-./-0!"#$%&# +#,,-//#0 425"-"2-67 %&#8/ +-*-,8252)-0 Il linking può essere di due tipi: Linking statico: l eseguibile contiene una copia del codice delle librerie; Linking dinamico: l eseguibile non contiene il codice, ma solo un riferimento al file della libreria. Se l eseguibile è stato linkato dinamicamente, le librerie richieste devono essere presenti ed installate nel sistema per poterlo eseguire. Se l eseguibile è linkato staticamente, la presenza delle librerie non è necessaria. 3

Linking statico vs. linking dinamico Linking statico Vantaggi: non necessita della presenza delle librerie è più veloce nel caricamento del programma Svantaggi: maggior consumo di memoria: se più programmi usano la stessa libreria, essa viene caricata in memoria più volte Linking dinamico Vantaggi: minor consumo di memoria: se più programmi usano la stessa libreria, essa viene caricata in memoria una volta sola. Svantaggi: necessita della presenza delle librerie nel sistema caricamento del programma più lento Creare una libreria statica Una libreria statica ha un nome che inizia con lib e termina con l estensione.a Il sorgente va suddiviso in un header ed un file con il codice Dopo aver creato il file oggetto del codice si usa il comando ar per creare la libreria: ar r libmylib.a mylib.o Per fare il linking si usano le opzioni -l e -L del gcc: -lmylib fa il link con la libreria libmylib.a -Ldir cerca le librerie in dir oltre che tra quelle di sistema gcc -o main main.o -L. -lmylib 4

// mylib.h void aggiungi(int *somma, int n); Creare una libreria dinamica Una libreria statica ha un nome che inizia con lib e termina con l estensione.so Il sorgente va suddiviso in un header ed un file con il codice Dopo aver creato il file oggetto del codice si usa l opzione -shared di gcc per creare la libreria: gcc -shared -o libmylib.so mylib.o Per fare il linking si usano le opzioni -l e -L del gcc: gcc -o main main.o -L. -lmylib Se una libreria è presente sia in versione statica che diamica, il compliatore sceglie la versione dinamica per forzarlo ad usare la versione statica si usa l opzione -static: gcc -static -o main main.o -L. -lmylib // mylib.h void aggiungi(int *somma, int n); 5

Installare le librerie dinamiche Il comando ldd elenca le librerie dinamiche richieste da un eseguibile: ldd main Per specificare dove si trovano le librerie esistono due sistemi di configurazione: Modifcare il file /etc/ld.so.conf specifica dove si trovano le librerie di sistema modificabile solamente dall amministratore (root) Usare la variabile d ambiente LD_LIBRARY_PATH specifica dove si trovano le librerie dell utente modificabile da tutti usando export 6