Departament d’Arquitectura de Computadors

Slides:



Advertisements
Presentaciones similares
TUTORIAL BÀSIC PER A LA GESTIÓ DE LA UBICACIÓ DE LES PERSONES EN L’APLICACIÓ DEL CATÀLEG D’ESPAIS SERVEI TÈCNIC I DE MANTENIMENT.
Advertisements

Impress 3... Posa-hi un fons!
Campus Virtual.
Campus Virtual.
Els instruments musicals
Exportar qualificacions a les actes
Importar les notes al Campus Virtual
Equacions amb dues incògnites.
MÚLTIPLES I DIVISORS.
EL LLENGUATGE MUSICAL.
Disseny de la interfície d’un smartwatch i l’aplicació mòbil
PREZI Primers passos Davinia Alfonsin 4rt C Info. Tecnològica
Tema 2. DIVISIBILITAT.
CUIDATGE.
Introducció de TEDIs (COACs) Versió 4.0
El mercat ELS NENS I NENES DE P-4.
L’Expressió escrita.
Les fraccions Sisè B curs
Creació d’un mapa personalitzat
TFC-Disseny d’aplicacions per a iOS Viral Zombies TD
Una forma fàcil d'obtenir algunes fórmules
Writer 5... sense faltes! Avui, aprendràs una de les eines que té el Writer: el corrector ortogràfic. Així aprendràs com el programa et pot ajudar a fer.
El nou pla docent de la UB: Adequació al sistema ECTS
Potències de nombres racionals
Impress 2... Edita la teves presentacions!
Writer 7... Amb estil El programa de tractament de text Writer té una eina molt útil quan fas documents molt llargs amb molts títols i subtítols: l’estil.
Com enllaçar des de PubMed al gestor de
PUZZLETS Com resoldríes el repte? Té solució única?
Descobrint un tresor amagat
Tutorials Campus Virtual Càrrega automàtica d’alumnes
LSD Josep Humet Departament d’Informàtica i Matemàtica Aplicada
Com introduir les Guies Docents
Quins documents puc posar al Campus Virtual de la UB?
GO PRO Martí Macià 5è A.
3. TOTS SOM DIFERENTS..
Matemàtiques 3er E.S.O..
WEBQUEST WEB...QUÈ ? Alumnes de l’Escola ESTEL VALLSECA.
DISSENY GRÀFIC D’UN PORTAL DE TRANSPARÈNCIA PER AJUNTAMENTS
Problema 1: Trobar la recta que passa pel punts A(2, -3) i B(-1, 3)
Formació de títols propis
Pràctica amb RQDA.
Objectiu Educatiu Trienni
Projecte: el mercat 2a PART P -4.
Explicació de l’enunciat
ERIC Manual d’ús.
BEGINNER EV3 PROGRAMMING Lesson
Problemes que es poden resoldre amb equacions
Les taules de multiplicar
Sistemes Operatius (S.O.) Onion: Mecanisme d'entrada al sistema
Al vostre gust amb el 8 Amb so ¯
La imatge corporativa Una eina fonamental en l’actualitat
Les fraccions Sisè B curs
Passes a seguir per iniciar un nou curs acadèmic en el GestIB
Threads en Java David Gañán Jiménez.
Perifèrics ... escaneja, passa de real a digital!
Projecte Fi de Carrera - J2EE Alumne: Daniel Clemente Marcè
LA NOVA SELECTIVITAT I L’ACCÉS A LA UNIVERSITAT
La literatura i les matemàtiques van de la mà.
“Senyor, ensenya’m a ser feliç i a donar pau”
Sistema de descàrrega d’aplicacions per a mòbils intel·ligents
Propostes de millora en el GIR
NO TINGUIS POR, QUE JO SÓC AMB TU
Llengua catalana i literatura
Projecte: Videojocs.cat
Exportar qualificacions a les actes
NOM DEL PAIS AUTORS DEL PROJECTE.
Estils i Plantilles Ms Word.
Elaboració del Pla de formació ajuntament de viladecans
Optimització d’E/S per aplicacions paral·leles
Jornada Tècnica per a Coordinadors d’informàtica CEE
Transcripción de la presentación:

Departament d’Arquitectura de Computadors make Presentació desenvolupada al Departament d’Arquitectura de Computadors com a Projecte de Millora Docent (curs 2000-01) make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Introducció Aquesta presentació explica la utilitat i el funcionament de l’eina make S’assumeix que ja saps compilar i muntar Pots seguir la presentació de dues formes: Nivell bàsic: Es descriu la utilitat de l’eina i les seves característies més importants Nivell avançat: S’expliquen aspectes com els objectius estàndar, paràmetres de make, ... make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Índex (nivell bàsic) Pots seguir la presentació seqüencialment o anar directament al punt que vulguis: Descripció del problema Interfície de l’eina i fitxer de dependències Exemples Variables Errors típics make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Problema Hi ha programes amb molts fitxers font(102)  Escriure comandes per a compilar i muntar tots aquests fitxers és laboriós Al desenvolupar/mantenir un programa només modifiquem alguns fitxers  Si els recompilem tots desaprofitem CPU  Si recompilem selectivament és fàcil errar make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Solució: eina make make és una eina per facilitar l’actualització de fitxers executables  Només regenera els fitxers desfasats  Automatitza la detecció de fitxers desfasats make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Interfície de l’eina make Fitxer de dependències Per defecte es diu Makefile o makefile Indica els fitxers involucrats i les línies de comandes necessàries per a generar-los Opcions a la línia de comandes: make [-f file] [opts] [targets] -f file i opts: es veuràn més endavant targets: fitxers a construir make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Fitxer de dependències: regles Descriuen dependències entre fitxers Hi ha una regla per cada fitxer objecte i per cada fitxer executable Les regles tenen la següent sintaxi: target: req1 req2 ... reqn <TAB>comanda1 ... <TAB>comandam Fitxer objectiu Fitxers requisits Línies de comandes (comencen amb tabulador) make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Exemple 3 fitxers font: prog.c, aux.c i aux.h aux.h és referenciat a prog.c i aux.c 2 fitxers objectes (prog.o i aux.o) i un executable (prog) make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Fitxer makefile de l’exemple Per a generar prog cal llegir prog.o i aux.o La línia de comandes que cal executar és ld -o prog prog.o aux.o Per a generar aux.o cal llegir aux.c i aux.h. La línia de comandes que cal executar és cc -c aux.c prog: prog.o aux.o ld -o prog prog.o aux.o prog.o: prog.c aux.h cc -c prog.c aux.o: aux.c aux.h cc -c aux.c make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Exemple: representació en arbre de les dependències entre fitxers prog.c aux.c aux.h prog.o aux.o prog Fitxer executable prog: prog.o aux.o cc -o prog prog.o aux.o prog.o: prog.c aux.c cc -c prog.c aux.o: aux.c aux.h cc -c aux.c Fitxers objecte Fitxers font make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Interpretació de les regles target: req1 req2 ... reqn <TAB>comanda1 ... <TAB>comandam IF ((target no existeix) OR (req1 és més recent que target) OR (req2 és més recent que target) OR ... (reqn és més recent que target)) THEN executa comanda1 ... comandam make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Interpretació fitxer dependències S’invoca: make target Recorregut descendent: de forma recursiva, es busquen: la regla que defineix target, les que defineixen els seus requisits, les dels requisits dels requisits, ..., fins arribar als fitxers font. Recorregut ascendent: s’avaluen les regles on tots els requisits són fitxers font i, de forma recursiva, les regles que vagin tenint tots els requisits avaluats make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Exemple: Primera compilació Suposem que ∄ prog, prog.o ni aux.o Executem: make prog 13: Fi de recorregut dels requisits de prog Com prog no existeix, s’executa cc -o prog prog.o aux.o 7: Recorregut dels requisits de prog Continuem amb aux.o 1: Recorregut dels requisits de prog Comencem per prog.o 14: Fi d’execució de make La sortida per stdout haurà estat: prompt$ make prog cc -c prog.c cc -c aux.c cc -o prog prog.o aux.o prompt$ prog prog: prog.o aux.o cc -o prog prog.o aux.o prog.o: prog.c aux.c cc -c prog.c aux.o: aux.c aux.h cc -c aux.c 8: Recorregut dels requisits de aux.o Comencem amb aux.h 2: Recorregut dels requisits de prog.o Comencem per prog.c 6: Fi de recorregut dels requisits de prog.o Com prog.o no existeix, s’executa cc -c prog.c 4: Recorregut dels requisits de prog.o Continuem amb aux.h 12: Fi de recorregut dels requisits de aux.o Com aux.o no existeix, s’executa cc -c aux.c 10: Recorregut dels requisits de aux.o Continuem amb aux.c prog.o aux.o 3: prog.c és un fitxer font Tornem a prog.o 5: aux.h és un fitxer font Tornem a prog.o 9: aux.h és un fitxer font Tornem a aux.o 11: aux.c és un fitxer font Tornem a aux.o prog.c aux.h aux.c make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Exemple: modifiquem prog.c Suposem que ∃ prog, prog.o i aux.o Executem: make prog 13: Fi de recorregut dels requisits de prog Com prog és més antic que prog.o, s’executa cc -o prog prog.o aux.o 7: Recorregut dels requisits de prog Continuem amb aux.o 1: Recorregut dels requisits de prog Comencem per prog.o 14: Fi d’execució de make La sortida per stdout haurà estat: prompt$ make prog cc -c prog.c cc -o prog prog.o aux.o prompt$ prog prog: prog.o aux.o cc -o prog prog.o aux.o prog.o: prog.c aux.c cc -c prog.c aux.o: aux.c aux.h cc -c aux.c 8: Recorregut dels requisits de aux.o Comencem amb aux.h 2: Recorregut dels requisits de prog.o Comencem per prog.c 12: Fi de recorregut dels requisits de aux.o Com aux.o és més actual que aux.c i aux.h, no s’executa res. 6: Fi de recorregut dels requisits de prog.o Com prog.o és més antic que prog.c, s’executa cc -c prog.c 4: Recorregut dels requisits de prog.o Continuem amb aux.h 10: Recorregut dels requisits de aux.o Continuem amb aux.c prog.o aux.o 3: prog.c és un fitxer font Tornem a prog.o 5: aux.h és un fitxer font Tornem a prog.o 9: aux.h és un fitxer font Tornem a aux.o 11: aux.c és un fitxer font Tornem a aux.o prog.c aux.h aux.c make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Variables Permeten parametritzar l’escriptura de makefiles. Assignar valor: nom_var = valor Referenciar: $(nom_var) Tenim accés a totes les variables d’entorn fent $(nom) Exemple: $(HOME) Algunes estan predefinides (més endavant es veurà com llistar-les) make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Exemple amb variables Si algun dia volem fer servir un altre compilador, només cal modificar aquesta línia. CC = /bin/cc CFLAGS = -c prog: prog.o aux.o $(CC) -o prog prog.o aux.o prog.o: prog.c aux.c $(CC) $(CFLAGS) prog.c aux.o: aux.c aux.h $(CC) $(CFLAGS) aux.c Si algun dia volem afegir un flag, només cal modificar aquesta línia make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Alguns errors típics Oblidar el tabulador a l’inici d’una línia de comandes (make donarà el missatge d’error Separator not found) Equivocar-se a l’escriure el nom d’una variable (make no dóna cap error) Referir-se al home directory utilitzant ~ Cal utilitzar $(HOME) Línies llarges amb el símbol \ make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Índex (nivell avançat) Pots seguir la presentació seqüencialment o anar directament al punt que vulguis: Objectius all, clean i install Alguns paràmetres de la comanda make Execució d’altres comandes On trobar més informació make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Objectiu all Per conveni, construeix tots els executables gestionats al fitxer de dependències Els seus requisits són la llista de fitxers executables. No té comandes associades. Típicament és la primera regla del fitxer. Per tant, és la que s’executa per defecte. Exemple: all: prog1 prog2 prog3 make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Objectiu clean Per conveni, esborra els fitxers temporals, objectes, llibreries i executables existents No té requisits. Per tant, sempre que es demani aquest objectiu s’executaran les comandes associades. Exemple: clean: rm core *.o *.a prog make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors Objectiu install Per conveni, fa les accions d’instal.lació dels executables generats Exemple: copiar l’executable a un directori install: prog <TAB>cp prog $(HOME)/bin make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Alguns paràmetres de make make [-f file] [opts] [targets] -f file: nom del fitxer de dependències -n: mostra quines comandes invocaria per a construir targets, però no les executa -i: si make invoca una comanda que finalitza retornant error, make no avorta -p: mostra variables i regles implícites make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Execució d’altres comandes A les línies de comandes d’un makefile podem invocar a qualsevol comanda. Exemples: crear un directori $(HOME)/dir: mkdir $(HOME)/dir passar la data de compilaciò com símbol DATE file.c: file.o cc -c -DDATE="\"`date`\"" file.c make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

On trobar més informació Pàgina de manual de la comanda make man make Manual de la comanda make de GNU http://www.gnu.org/manual/make/ Llibre: “Managing Projects with make, 2nd Edition” Editorial O’Reilly http://www.oreilly.com/catalog/make2/ make V1.0 Set.-2001 Departament d’Arquitectura de Computadors

Departament d’Arquitectura de Computadors that's all folks Comentaris: enricm@ac.upc.es make V1.0 Set.-2001 Departament d’Arquitectura de Computadors