Betriebssysteme · Institut für Systemarchitektur · Fakultät Informatik · TU Dresden

Studienbegleitendes Praktikum -- Ein einfaches Makefile




Programmieren unter UNIX

Termin

Die Lösung für diese Aufgabe ist bis zum 12.11.2006 einzureichen.

Aufgabe 1

Diese Übung soll Sie mit der Programmierumgebung unter Unix vertraut machen.

Die Aufgabe besteht darin, ein einfaches, aus zwei Moduln bestehendes Programm zu schreiben und daraus mit dem Compiler und Linker ein lauffähiges Programm zu erzeugen. Compiler und Linker sollen dabei von einer Projektdatei (einem Makefile) gesteuert werden, das auch die Abhängigkeiten der Objekt- und Quelldateien untereinander festlegt und so dafür sorgt, daß nach einer Änderung einer Quelldatei alle davon abhängigen Objektdateien neu compiliert werden.

In Ihrem Beispielprogramm verwenden Sie bitte folgende Module:
main.c
enthält das Hauptprogramm. Es erwartet eine Zahl als Parameter auf der Kommandozeile des Programms und soll alle Primzahlen bis zu dieser Zahl ausgeben. Dazu benutzt es folgendes Unterprogramm:

prime.c
enthält eine Funktion isprime(), die testet, ob eine als Parameter übergebene Zahl eine Primzahl ist.

Hier ist eine Beispielsitzung mit diesem Programm:

$ prim 15
2
3
5
7
11
13
$ _

  1. Programmieren Sie die Module des Programms. Die Schnittstelle der Unterprogramme zum Hauptprogramm sollen über Header-Dateien exportiert werden, die vom Hauptprogramm mit "#include" eingebunden werden.
  2. Schreiben Sie ein Makefile. Das Makefile sollte nach Möglichkeit aus lediglich drei Regeln bestehen:

    • einer Regel zur Erzeugung des ausführbaren Programmes aus den zwei Objekt-Dateien,
    • einer clean Regel, die alle generierten Dateien löscht,
    • einer Regel zur automatischen Generierung von Abhängigkeiten.

    Das Programm soll mit der Compiler-Option -Wall generiert werden.

  3. Übersetzen und linken Sie die Module mit Hilfe des Makefile und dem Programm make.
  4. Testen Sie das korrekte Generieren des Programms und das Programm selbst. Als Make-Version soll GNU Make Verwendung finden, welches z.B. auf Ganymed installiert ist.

Eine vollständige Lösung besteht aus den (funktionstüchtigen) Quelldateien und aus einem Makefile, das Compiler und Linker aufruft.

Material

Online-Ressourcen:
Make Beschreibung

Prüfung auf Korrektheit der Lösung

Bei der Bewertung der Lösung werden 3 Dinge geprüft:
  1. Enthält das Makefile wirklich nur drei Regeln?
  2. Wird -Wall zum Übersetzen verwendet?
  3. Stimmen die Abhängigkeiten? (hier werde ich der Reihe nach Änderungen an den Dateien mittels 'touch' simulieren und dann prüfen, ob wirklich nur die minimal nötige Anzahl von Befehlen zum Generieren des Programms ausgeführt wird).

Norman Feske, http://os.inf.tu-dresden.de/~nf2/
9. Oct 2006
· Copyright © 2001-2022 Operating Systems Group, TU Dresden | Impressum ·