1 / 25

make

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

melora
Download Presentation

make

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. Í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

  4. 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

  5. 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

  6. 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

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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. Í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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. that's all folks Comentaris: enricm@ac.upc.es Departament d’Arquitectura de Computadors

More Related