slide1 n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
make PowerPoint Presentation
Download Presentation
make

Loading in 2 Seconds...

play fullscreen
1 / 25

make - PowerPoint PPT Presentation


  • 105 Views
  • Uploaded on

make. Presentació desenvolupada al Departament d’Arquitectura de Computadors com a Projecte de Millora Docent (curs 2000-01). Introducció. Aquesta presentació explica la utilitat i el funcionament de l’eina make S’assumeix que ja saps compilar i muntar

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'make' - melora


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
slide1

make

Presentació desenvolupada al Departament d’Arquitectura de Computadors com a Projecte de Millora Docent (curs 2000-01)

Departament d’Arquitectura de Computadors

introducci
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, ...

Departament d’Arquitectura de Computadors

ndex nivell b sic
Í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

Departament d’Arquitectura de Computadors

problema
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

Departament d’Arquitectura de Computadors

soluci eina make
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

Departament d’Arquitectura de Computadors

interf cie de l eina make
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 [-ffile] [opts] [targets]

-f file i opts: es veuràn més endavant

targets: fitxers a construir

Departament d’Arquitectura de Computadors

fitxer de depend ncies regles

Fitxers requisits

Fitxer objectiu

Línies de comandes (comencen amb tabulador)

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

Departament d’Arquitectura de Computadors

exemple
Exemple
  • 3 fitxers font: prog.c, aux.ci aux.h
  • aux.h és referenciat a prog.c i aux.c
  • 2 fitxers objectes (prog.o i aux.o) i un executable (prog)

Departament d’Arquitectura de Computadors

fitxer makefile de l exemple

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

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

Fitxer makefile de l’exemple

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

Departament d’Arquitectura de Computadors

exemple representaci en arbre de les depend ncies entre fitxers

prog

Fitxer executable

prog.o

aux.o

Fitxers objecte

prog.c

aux.h

aux.c

Fitxers font

Exemple: representació en arbrede les dependències entre fitxers

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

Departament d’Arquitectura de Computadors

interpretaci de les regles
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

Departament d’Arquitectura de Computadors

interpretaci fitxer depend ncies
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

Departament d’Arquitectura de Computadors

exemple primera compilaci

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$
Exemple: Primera compilació
  • Suposem que ∄prog, prog.o ni aux.o
  • Executem: make prog

14: Fi d’execució de make

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

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

Departament d’Arquitectura de Computadors

exemple modifiquem prog c

La sortida per stdout haurà estat:

  • prompt$ make prog
  • cc -c prog.c
  • cc -o prog prog.o aux.o
  • prompt$
Exemple: modifiquem prog.c
  • Suposem que ∃prog, prog.o i aux.o
  • Executem: make prog

14: Fi d’execució de make

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

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

Departament d’Arquitectura de Computadors

variables
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)

Departament d’Arquitectura de Computadors

exemple amb variables

Si algun dia volem fer servir un

altre compilador, només cal

modificar aquesta línia.

Si algun dia volem afegir

un flag, només cal modificar

aquesta línia

Exemple amb variables

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

Departament d’Arquitectura de Computadors

alguns errors t pics
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 \

Departament d’Arquitectura de Computadors

ndex nivell avan at
Í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ó

Departament d’Arquitectura de Computadors

objectiu all
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

Departament d’Arquitectura de Computadors

objectiu clean
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

Departament d’Arquitectura de Computadors

objectiu install
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

Departament d’Arquitectura de Computadors

alguns par metres de make
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

Departament d’Arquitectura de Computadors

execuci d altres comandes
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

Departament d’Arquitectura de Computadors

on trobar m s informaci
On trobar més informació
  • Pàgina de manual de la comanda makeman 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/

Departament d’Arquitectura de Computadors

slide25

that's all folks

Comentaris: enricm@ac.upc.es

Departament d’Arquitectura de Computadors