Hallo Leute, ich beschäftige mich zur Zeit mit dem GCC, da ich ein Array an einer bestimmten Adresse definieren will. Leider hab ich nicht so viel Zeit von Null anzufangen und dann alles durchzuarbeiten, nur um diesen Speicher zu reservieren. Wäre mir zwar lieber, weil ich kein gefährliches Halbwissen mag, aber... kann mir einer bitte erklären, was es mit der Output Section auf sich hat? Ich weiß nicht genau was ich mir darunter vorstellen kann. Ich weiß, dass es ein "Bereich" bzw. eine (bestimmte) Stelle in der Output File ist. Trotzdem kann ich mir nichts genaues darunter vorstellen, da ich mich bisher noch nicht großartig mit der Funktion eines Linkers auseinandergesetzt habe, da ich es bisher noch nicht gewagt hab mich daran zu probieren. Danke schon mal für die Hilfe Grüße B0bbyR4y
Grob überrissen: Alles wird in irgendeine Sektion abgelegt (das heißt an die schon bestehenden Daten darin angehängt). Traditionell unter Unix und auch generell bei Mikrocontrollern sind das .text (für Code, ausführbar und nicht schreibbar), .data (für Variablen mit Initialisierung, schreibbar, nicht ausführbar) und .bss (wie .data, nur mit 0 initialisiert), seit längerem auch .rodata (nicht schreibbar, nicht ausführbar, für konstante Daten). Wenn man nur alle Objekte beim Linken hintereinander hängt wäre alles unpraktisch durcheinander gemischt. So hingegen kann der Linker alle .text Sektionen hintereinander hängen und gemeinsam ins .text der Ausgabe schreiben. (Jede Sektion hat dabei noch andere Eigenschaften, wie etwa eine Startadresse.) So lassen sich z.B. alle .bss Variablen in einem Rutsch auf 0 initialisieren. Ebenso kann man auch eigene Sektionen definieren. Man muss dann halt auch ein angepasstes Linkerskript verwenden damit der Linker auch weiß, was er mit der Sektion machen soll (z.B. eben an eine bestimmte Adresse legen).
Hi Andreas, dass habe ich jetzt soweit verstanden. Danke. Kannst du mir noch sagen, wo ich die Input Datei(en) und die Output Datei finden kann? Die Objekt Dateien sind ja die mit der *.o Endung oder? Grüße B0bbyR4y
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.