18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Capitolo 14<br />

Le librerie<br />

Le librerie contengono codice e dati, cioè funzioni globali e variabili globali, che possono<br />

essere riutilizzati in diversi programmi. Molte funzioni usate dai programmi C sono state<br />

standardizzate, così come i nomi degli header da includere prima di usarle. Abbiamo quindi<br />

<strong>per</strong> lavorare con i file, <strong>per</strong> poter chiamare le funzioni relative alle stringhe<br />

(lunghezza, confronto, sottostringa, ...) e moltissimi altri header.<br />

Lo scopo del corso non è quello di prendere confidenza con la molteplicità di funzioni della<br />

libreria standard o di altre librerie. Le librerie a disposizione del compilatore sono tantissime<br />

e coprono molte delle funzionalità più comunemente richieste. In questo documento sono state<br />

già utilizzate delle funzioni di libreria come printf o malloc. Nonostante l’analisi delle librerie<br />

standard non sia l’obiettivo della trattazione, alcune librerie contengono funzioni che verranno<br />

descritte nel dettaglio anche in questa sede, in quanto implementano funzionalità che sono<br />

ritenute importanti in ogni contesto applicativo. In generale, tutte le funzioni e le variabili globali<br />

maggiormente utilizzate (come stdin e stdout) sono contenute nella libreria C, la cosiddetta<br />

libc, che viene usata automaticamente dal compilatore <strong>per</strong> risolvere i simboli non definiti nei<br />

file sorgente. Il compilatore può disporre anche di una sua propria libreria (<strong>per</strong> esempio libgcc),<br />

contenente procedure chiamate dal codice oggetto generato dal compilatore stesso. Anche questa<br />

libreria viene inclusa automaticamente durante la fase finale di compilazione.<br />

14.1 Uso di librerie esterne<br />

Dal momento che molte funzioni sono incluse nelle librerie standard, il programmatore non è<br />

tenuto a fornire alcuna informazione aggiuntiva al compilatore e al linker riguardo l’utilizzo di tali<br />

librerie, in quanto il compilatore le include automaticamente. Se <strong>per</strong>ò è necessario utilizzare una<br />

funzione che è inclusa in una libreria non standard, bisogna esplicitamente istruire il compilatore<br />

riguardo <strong>alla</strong> libreria che contiene la funzione.<br />

Le librerie sono tipicamente memorizzate in file aventi estensione “.a”, dette librerie statiche 1 .<br />

Le librerie statiche sono create a partire dai file oggetto “.o” <strong>per</strong> mezzo del programma ar, e sono<br />

usate dal linker <strong>per</strong> risolvere i riferimenti alle funzioni al momento della compilazione.<br />

Le librerie standard del C sono solitamente poste nella directory /usr/lib e /lib. Per<br />

esempio, la libreria matematica del C è tipicamente memorizzata nel file /usr/lib/libm.a. Le<br />

dichiarazioni dei prototipi delle funzioni si trovano nei relativi file di intestazione, che si trovano di<br />

solito nella directory /usr/include. Per esempio, il file di intestazione della libreria matematica<br />

1 Esistono anche le cosiddette librerie dinamiche, ma la loro trattazione va oltre gli scopi di queste dispense.<br />

136

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!