Output Section

Gast #3713530
Lesenswert?
• ▲
▼
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
#3713832
Lesenswert?
• ▲
▼
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).
Gast #3718813
Lesenswert?
• ▲
▼
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.