Next: X-WINDOWS Up: OVERSÆTTERE (COMPILERE) Previous: Starbase-on-X11 eksempel

Make, Makefile og mkmf

make, makefile og mkmf er hjælpeprogrammer til software-udvikling, som er tilgængelig på alle maskiner.

Kort beskrivelse:

make er et program, som holder styr på hvilke filer som (ikke) er oversat i et større programkomplex.

Makefile er en hjælpefile til make, hvor det er defineret hvilke filer, som er er afhængige af hinanden. Makefile'en bliver som regel genereret vha programmet mkmf. Mkmf står for make-makefile.

Eksempel på programafvikling: Det følgende eksempel viser brugen af make. fil_1.c includerer <math.h>, mens fil_2.c og fil_3.c inkluderer myheader.h. Desuden skal det hele linkes sammen med imsl-biblioteket.

  1. Lav et underkatalog, som kun indeholder de relevante filer

    
    vip:/usv2/nn $ mkdir prgk   <CR>
    vip:/usv2/nn $ mv fil_1.c fil_2.c fil_3.c myheader.h prgk <CR>
    vip:/usv2/nn $ cd prgk   <CR>

  2. Lav en Makefile. Det gøres lettest ved at afgive ordren

    
    vip:/usv2/nn $ mkmf   <CR>

    mkmf undersøger filerne i kataloget og afgør, hvorledes de er afhængige af hinanden. Afhængighed vil i dette tilfælde bl.a. sige at fil_2.c og fil_3.c skal oversættes på ny hvis man retter i myheader.h.

  3. Gå ind i Makefile'en, vha. vi eller emacs, og tilføj

    
    -limslib -lm

    i den linje hvor der står ''LDFLAGS = ''.

    Desuden kan man fx tilføje -O i den linje med CFLAGS = , og rette a.out til noget andet i linjen med PROGRAM = . Hvis hovedprogrammet er skrevet i pascal skal man rette LD = cc til LD = pc og tilsvarende for fortran LD = fc.

  4. Oversæt ved at skrive

    
    vip:/usv2/nn $ make <CR>

Hvis man nu retter i en af filerne og derefter skriver make, vil kun denne fil og alle de filer, som er afhængige af den, blive oversat til objektkode igen, og derefter bliver de linket sammen med de andre objektfiler.

I en Makefile er der mange muligheder for at få udført forskellige ting, f.eks.

make, mkmf og Makefile anvendes også sammen med pascal og fortran programmer.



Next: X-WINDOWS Up: OVERSÆTTERE (COMPILERE) Previous: Starbase-on-X11 eksempel


mr@imm.dtu.dk