Forum: Compiler & IDEs GNU GCC, linker --gc-sections Dokumentation?


von Alex -. (alex796)


Lesenswert?

Hi,
Große Verwirrung hier.
Ich habe mir die Compiler/Linker Flags bei meinem STM32CubeIDE 
generierten STM32 ARM Cortex-M4 Projekt mal näher angesehen. Startup 
Datei und Linkerscript werden von ST bereitgestellt. Toolchain: GNU GCC 
mit ARM

Der Linker bekommt u.a. folgendes Flag:
1
-Wl,--gc-sections

Ich würde gerne in der GNU GCC Dokumentation nähere Informationen über 
--gc-sections nachlesen, kann aber die Informationen beim besten Willen 
nicht finden.

Das einzige, was mir Google gibt von der GCC Webseite:
https://gcc.gnu.org/onlinedocs/gnat_ugn/Compilation-options.html

Bezieht sich aber nur auf GNAT?

In der eigentlichen GCC Dokumentation unter den Linkerflags steht nichts 
über gc-sections:
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html#Link-Options

Zur Info:
Ich verwende das Linkerscript von ST mittel -T Option.


Zu meiner eigentlichen Frage/Verwirrung:
Wieso kann ich auf der GCC Webseite keine Informationen über 
--gc-sections bekommen?

Vielen Dank,

von jemand (Gast)


Lesenswert?

Du musst bei GNU ld schauen, zB hier die Manpage: 
https://linux.die.net/man/1/ld

von jemand (Gast)


Lesenswert?

-Wl spezifiziert Optionen, die von gcc am dem linker durchgereicht 
werden.

von jemand (Gast)


Lesenswert?


Beitrag #6915296 wurde vom Autor gelöscht.
von Rolf M. (rmagnus)


Lesenswert?

Alex -. schrieb:
> Der Linker bekommt u.a. folgendes Flag:-Wl,--gc-sections
>
> Ich würde gerne in der GNU GCC Dokumentation nähere Informationen über
> --gc-sections nachlesen, kann aber die Informationen beim besten Willen
> nicht finden.

Du hast doch schon rausgefunden, dass es eine Linker-Option ist. Die 
stehen in der Linker-Doku, nicht in der von GCC.

von Alex -. (alex796)


Lesenswert?

@jemand:
Vielen Dank für die Links.

Rolf M. schrieb:
> Du hast doch schon rausgefunden, dass es eine Linker-Option ist. Die
> stehen in der Linker-Doku, nicht in der von GCC.

Und genau deswegen bin ich verwirrt, weil ich bis dato dachte, dass der 
GCC Linker Teil von der GCC Toolchain sei. Entsprechend würde ich 
erwarten, dass die Doku zum Linker ebenfalls auf der GCC Webseite zu 
finden sei.

Mich hat es jedenfalls verwirrt, dass Kapitel 3.15 der GCC Doku auf die 
Link Optionen eingeht, ebenfalls das -Wl Argument erwähnt, aber 
keinerlei die verschiedenen Optionen erwähnt, oder auf ein anderes 
Dokument hinweist (das vom Linker, wo auch immer dieses Dokument zu 
finden ist).
https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html

Die Zusammenhänge muss man erstmal kennen, dann ergeben sie sicherlich 
Sinn :)

: Bearbeitet durch User
von Rolf M. (rmagnus)


Lesenswert?

Alex -. schrieb:
> Rolf M. schrieb:
>> Du hast doch schon rausgefunden, dass es eine Linker-Option ist. Die
>> stehen in der Linker-Doku, nicht in der von GCC.
>
> Und genau deswegen bin ich verwirrt, weil ich bis dato dachte, dass der
> GCC Linker Teil von der GCC Toolchain sei.

GCC ist nur ein Compiler, keine Toolchain. Und den "GCC Linker" gibt es 
nicht. Compiler und Linker sind Teile der Toolchain, aber eben separate 
Teile.

> Mich hat es jedenfalls verwirrt, dass Kapitel 3.15 der GCC Doku auf die
> Link Optionen eingeht, ebenfalls das -Wl Argument erwähnt, aber
> keinerlei die verschiedenen Optionen erwähnt, oder auf ein anderes
> Dokument hinweist (das vom Linker, wo auch immer dieses Dokument zu
> finden ist).

Die Verwirrung kommt vielleicht daher, dass man den Linker meist nicht 
direkt, sondern über den Compiler aufruft. Die Option -Wl ist eine 
Compiler-Option. Sie sagt dem Compiler: "Gibt alles, was danach kommt, 
an den Linker weiter". Das, was man dort dann angibt, steht aber 
dementsprechend in der Doku des Linkers.

von Alex -. (alex796)


Lesenswert?

Super, Rolf. Dank deiner Erklärung leuchtet es nun für mich ein. Und ich 
muss zugeben, dass ich die anderen Texte im Internet und in Büchern nun 
auch anders verstehe, als anfangs.

Vielen Dank an dich und jemand.

Grüße,

von jemand (Gast)


Lesenswert?

Freut mich, dass ich helfen konnte :)

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
Noch kein Account? Hier anmelden.