ACHTUNG: Diese Programme erfordern Kickstart V37 oder jünger. Autor: Jochen Becher Copyright: © 1994 MAXON Computer GmbH Version: 1.0 am 15.6.94 Eine besondere Stärke des MaxonC++ Compilers ist das "logfile". Dieses File, das üblicherweise im Verzeichnis "MCPP:lib" sein Dasein fristet, enthält Einträge über Objektdateien, die in dem gleichen Verzeichnis stehen. Zu jeder Objektdatei sind Symbole genannt, die diese Objektdatei definiert. Der Vorteil ist ganz klar: Der Linker kann die Logdatei schneller durchsuchen als eine Bibliothek (z.B. amiga.lib) und damit schneller linken. Außerdem lassen sich die Objektdateien einfach durch neuere Versionen ersetzen, als einzelne Objekte einer Bibliothek. Die Frage ist nur, wie bekommt man die Symbole in die Logdatei? Insbesondere die C++ Symbole sind ja nicht gerade trivial aufgebaut und erfordern ziemlich viel Arbeit. Hierbei helfen zwei kleine Programme: **************************************************************** delObject löscht einen Objekteintrag aus der Logdatei, z.B. entfernt delObject MCPP:lib startup.o den (zumindest beim Autor) ersten Eintrag der Logdatei. Aus verständlichen Gründen sollten Sie dieses Beispiel jetzt nicht ausführen - Sie müssten sich sonst die Originaldatei wieder installieren. Die Objektdatei selbst (im obigen Beispiel als MCPP:lib/startup.o) wird nicht (!) gelöscht. **************************************************************** printSymbols gibt den Namen der Objektedatei und alle Symbole dieser Objektdatei auf der Standardausgabe aus, z.B. sollte das Ergebnis von printSymbols MCPP:lib/startup.o ungefähr so aussehen: startup.o _EXIT_0__Reply_StartuP_MessAge _INIT_0_Get_StartuP_MessAge __StartUp StartupMessage Wenn man nun die Ausgabe umleitet, kann man diese Symbole direkt an die Logdatei anhängen: printSymbols MCPP:lib/startup.o >>MCPP:lib/logfile Auch dieses Beispiel sollten Sie besser nicht durchführen, ihre Logdatei enthielte sonst den Eintrag startup.o mit allen Symbolen doppelt. **************************************************************** Neben diesen beiden Programmen gibt es noch zwei Skripte "log" und "unlog". Das Skript "log" kopiert eine Objektdatei in das Verzeichnis MCPP:lib, löscht den Eintrag aus dem logfile und hängt die neuen Einträge wieder an. Von der Logdatei wird vorher noch eine Kopie auf MCPP:lib/logfile.bak gemacht. Mit "log ALL" können sie diesen Vorgang auf ein ganzes Verzeichnis anwenden, dann wird "log" für alle Objektdateien im aktuellen Verzeichnis ausgeführt. Das Skript "unlog" löscht eine Objektdatei aus dem logfile, aber nicht die Objektdatei im Verzeichnis MCPP:lib selbst. Auch hier wird vorher eine Kopie der Logdatei angelegt, allerdings auf MCPP:lib/logfile.bik. Auch hier wird der Vorgang mit "unlog ALL" auf alle Objektdateien des aktuellen Verzeichnisses durchgeführt.