- a
- (AskModule) Durch die Option ,,+a`` gibt der Linker
dem Benutzer die Möglichkeit, vor dem Einlesen jeder Datei
alternative Dateinamen anzugeben.
Hierbei zeigt er in eckigen Klammern den vorgegebenen Dateinamen an. Wenn
Sie einfach drücken, wird die angezeigte Datei eingelesen,
andernfalls die von Ihnen eingegebene. Dieser Vorgang wird solange
wiederholt, bis die Datei erfolgreich eingelesen werden konnte.
Geben Sie einfach nur ein Minuszeichen ein, wird für diesen
Linkvorgang die Option ausgeschaltet und die restlichen, noch
zu lesenden Dateien, ohne weitere Nachfrage geladen.
Diese Option ist sehr nützlich im Zusammenhang mit der bedingten
Compilation. Falls beispielsweise ein Quelltext mit Hilfe der Compiler-Option
,,+oDemo`` als Demoversion kompiliert und dabei die
t-Option des Compilers benutzt wurde, beispielsweise also mit
m2c -oDemo -tNameDemo
kann man den Linker zwingen, diese Demoversion statt der
normalen zu laden.
- i
- Für das fertige Programm wird eine Workbench-Ikone erzeugt.
Die Option ,,-i`` unterdrückt dies. Wurde der Linker
von der Workbench gestartet,
ist die Ikonen-Erzeugung standardmässig eingeschaltet,
beim Start vom CLI ist sie ausgeschaltet.
- c
- steht für ``CODE``. ,,+c`` bewirkt, dass die einzelnen
CODE-Hunks soweit wie möglich in maximal 32kByte grossen Hunks
zusammengelegt werden, was zu einem erheblich kürzeren Programm
führen kann. Standardeinstellung für diese Option ist ,,+``.
- d
- steht für ``DATA``. Nach ,,+d`` legt der Linker alle
DATA- und BSS-Hunks gleichen Typs (CHIP, FAST,,,normal``) zusammen.
Standardeinstellung für diese Option ist ,,+``. Hierdurch wird
das fertige Programm etwas kleiner. In einem residenten Programm
dürfen keine DATA- oder BSS-Hunks vorhanden sein, einzig MERGDATA-
und MERGBSS-Hunks sind erlaubt (-Modell); diese werden immer unabhängig
von der Option d zusammengelegt.
Falls jedoch sehr grosse
Hunks erzeugt werden, kann ein Programm eventuell
bei stark fragmentiertem Speicher nicht geladen werden, da
kein genügend grosser zusammenhängender Speicherbereich zur
Verfügung steht. In diesem Fall sollte man vorsichtshalber
die Option mit ,,-d`` ausschalten.
- p
- Bei Aktivierung dieser Option wird
eine Map-Datei generiert, aus
der der Aufbau des Programms hervorgeht. Ohne Angabe wird
keine Map-Datei generiert.
Meldet das Programm ,,enforcer``
Fehler im getesteten Programms,
wird deren Position mit Hunk und Offset angegeben.
Mit dieser Information kann man
jedoch wenig anfangen, wenn man den genauen Aufbau seines Programms
nicht kennt.
Mit Hilfe der Map-Datei und des Dekoders kann man nun die Fehlerposition
relativ genau lokalisieren, indem man den entsprechenden Hunk und Offset
aufsucht und dann mit m2decobj die exakte Position sucht.
Zur weiteren Vereinfachung der Fehlersuche kann
man auch mit der Option ,,+x`` linken,
dann werden die Moduln komplett gelinkt und keine Prozeduren wegoptimiert.
Dadurch erspart man sich etwas Rechnerei.
In der Map-Datei befindet sich zunächst eine Beschreibung der Hunks
mit Grösse und Typ. Direkt daran schliesst sich die Symboltabelle des
Linkers an. Diese ist jedoch nach unbrauchbaren Kriterien sortiert.
Der Dos-Befehl sort schafft jedoch leicht Abhilfe. Die Zeilen sind
so aufgebaut, dass die Struktur der Datei beim Sortieren erhalten
bleibt (erst Hunks, dann die Symbole) und danach die Symbole in
aufsteigender Hunk-, Offset-Reihenfolge stehen. Wegen des seltenen
Gebrauchs wurde davon abgesehen, eine eigene Sortierroutine in den
Linker zu integrieren, um ihn nicht unnötig zu vergrössern.
- lLibFile
- Hier ist ,,+`` oder ,,-`` ohne Wirkung.
Durch diese
Option wird dem Linker mitgeteilt, in welchen Dateien undefinierte
Symbole zu finden sind. Das Argument LibFile
muss den kompletten Pfad enthalten.
Der Buchstabe ,,l`` kann sich direkt an die anderen
Optionen anschliessen; falls
jedoch mehrere Dateien geladen werden sollen, muss jeweils eine
eigene Option hierfür angegeben werden, da alle Zeichen nach dem
,,l`` als Teil des Dateinamens eingelesen werden.
Die Angabe einer oder mehreren zusätzlichen Dateien mit Symboldefinitionen
gilt immer nur für die nächste
zu erstellende Programmdatei. Danach oder auch bei Misserfolg
werden diese Angaben vergessen.
- tTargetFile
- bietet die Möglichkeit, der erzeugten Datei
einen anderen Namen zu geben. Diese Option gilt (wie ,,l``) nur
für den nächsten Linkvorgang. Direkt an den Buchstaben ,,t`` schliesst
sich ein Dateiname einschliesslich des Pfads an. Standardeinstellung ist der
Modulname.
- sMinStack
- Die Option ,,s`` erlaubt die Angabe einer
Dezimalzahl, die nur für das Linken residenter Programme eine Bedeutung
hat. Sie bestimmt die Grösse des Stacks, die das Programm mindestens
benötigt. Falls der Stack zur Laufzeit kleiner als dieser angegebene
Wert ist, wird der Speicher vom Laufzeitsystem Arts alloziert.
Vorgabewert ist 4000 Byte. Die geänderte Einstellung gilt für alle
weiteren Linkvorgänge.
- gDirectory
- wechselt in das angegebene Verzeichnis. Siehe
hierzu Abschnitt 2.2 auf Seite
.
Die Option -gm2:Tools setzt
,,m2:Tools`` als aktuelles Verzeichnis,
-g kehrt zurück ins Startverzeichnis.
- 012348
- Auch hierbei sind ,,+`` oder ,,-`` wirkungslos.
Durch die Ziffer -- nur eine, d.h. die zuletzt angegebene ist gültig --
wird dem
Linker mitgeteilt, welche Art Objektdateien einzubinden sind, um den
bestmöglichen Code für den Zielprozessor zu erzeugen. Gibt man
etwa die Option ,,-8``, so verwendet der Linker möglichst
,,.ob8``-Files, damit das Programm mit einer 68881-FPU möglichst
effizient läuft. Standardeinstellung ist ,,0``.
- q
- Durch ,,-q`` werden alle Meldungen des Linkers unterdrückt.
Ausserdem wird im Fehlerfall nicht in den interaktiven Modus
verzweigt, damit der Linker auch in Batch-Dateien aufgerufen
werden kann.
- r
- steht für ``Resident`` Die Angabe ,,+r`` hat zur Folge,
dass statt Arts.obj (oder Arts.ob1 usw.)
das File RArts.obj geladen wird, was unter bestimmten,
im Abschnitt 5.2 beschriebenen
Bedingungen zu einem residentfähigen Programm führt.
Wenn diese Bedingungen nicht erfüllt sind, wird das Programm zwar
gelinkt, aber als nicht-residentfähig deklariert. Man sollte
die Abschlussmeldungen des Linkers also immer genau lesen!
Ohne spezielle Angaben wird die nicht residentfähige Version
des Laufzeitsystems dazugebunden.
- m
- bestimmt zusammen mit der Option ,,r`` das zu ladende
spezielle Arts. Hier steht ,,m`` für ,,Minimal``-Arts, das gegenüber dem
normalen Arts kürzer, aber auch gefährlicher ist, da Laufzeitfehler
nicht durch Requester abgefangen werden, sondern zu ,,Guru Meditationen``
führen.2.26 Standardeinstellung
ist ,,-``.
- x
- ist vonnöten, um Debugger-fähige Programme zu linken.
Mit der Option ,,+x`` -- der Vorgabe -- werden Informationen für den
Debugger erzeugt und entsprechend der Option ,,r``
das Laufzeitsystem DArts.obj oder DRArts.obj
eingebunden. Wird eines dieser beiden Laufzeitsysteme
verlangt, ist die Option ,,+m`` ohne Wirkung!
Das Debugger-fähige Laufzeitsystem braucht nämlich die gesamte
Unterstützung. Ausserdem ist zu beachten, dass
mit dieser Option alle Hunks -- also auch unbenutzte --
mit eingebunden werden. Die Optimierung
ist auf Seite
beschrieben. Debugbare Programme sind also
immer grösser als nicht debugfähige.
Die Optionen ,,r``, ,,m`` und ,,x``
bestimmen gemäss Tabelle 2.10 gemeinsam, welches
Laufzeitsystem eingebunden wird:
Tabelle 2.10:
Vom Linker zu verwendendes Laufzeitsystem
Option R |
Option M |
Option X |
zu ladendes Arts |
- |
- |
- |
Arts |
- |
- |
+ |
DArts |
- |
+ |
- |
MArts |
- |
+ |
+ |
DArts2.27 |
+ |
- |
- |
RArts |
+ |
- |
+ |
DRArts |
+ |
+ |
- |
MRArts |
+ |
+ |
+ |
DRArts2.28 |
|
- ??
- Die Eingabe zweier Fragezeichen zeigt die Version des Linkers
und den aktuellen Zustand aller Optionen.