Forum: Compiler & IDEs gcc: Größe des bin-file anzeigen


von angehender IT-Professional (Gast)


Lesenswert?

Wie kann ich mit gcc (genauer: arm-none-eabi-gcc-4.8.3) im 
Konsolenfenster mit den Compiler-Schaltern die Dateigröße des 
output-files + den Zeitstempel anzeigen lassen ohne stattdessen jedesmal 
im Verzeichnis nachschauen zu müssen?

von Peter II (Gast)


Lesenswert?

angehender IT-Professional schrieb:
> Wie kann ich mit gcc (genauer: arm-none-eabi-gcc-4.8.3) im
> Konsolenfenster mit den Compiler-Schaltern die Dateigröße des
> output-files + den Zeitstempel anzeigen lassen ohne stattdessen jedesmal
> im Verzeichnis nachschauen zu müssen?

wie kommst du darauf das der Compiler das kann, bzw. ob es überhaupt 
eine Aufgabe vom Compiler ist?

von angehender IT-Professional (Gast)


Lesenswert?

Ich meine, ich hätte das mal unter AVR-Studio gesehen.

von Peter II (Gast)


Lesenswert?

angehender IT-Professional schrieb:
> Ich meine, ich hätte das mal unter AVR-Studio gesehen.

nein, bestimmt nicht. Dort ruft das Makefile noch andere Programm auf, 
die dann dafür zuständig sind.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Peter II schrieb:
> Dort ruft das Makefile noch andere Programm auf, die dann dafür
> zuständig sind.

Und zwar arm-none-eabi-size, konkreter gesagt.

von angehender IT-Professional (Gast)


Lesenswert?

>Und zwar arm-none-eabi-size, konkreter gesagt.
Dann werde ich an dieser Stelle mal weiterbohren. Danke.

73

von angehender IT-Professional (Gast)


Lesenswert?

Einfach klasse, diese Forum.
./arm-none-eabi-size --target=binary file.out
funktioniert.

Nun muß ich das "nur noch" dem automatischen Makefile Generator von 
Eclipse beibringen...

von Dr. Sommer (Gast)


Lesenswert?

angehender IT-Professional schrieb:
> Nun muß ich das "nur noch" dem automatischen Makefile Generator von
> Eclipse beibringen...

Das GNU ARM Eclipse Plugin macht das sogar automatisch.

arm-none-eabi-size gibt aber keineswegs die Größe der Datei aus (wie du 
in deinem Ausgangsposting haben wolltest), sondern die Größe der darin 
enthaltenen Sections.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Dr. Sommer schrieb:
> sondern die Größe der darin enthaltenen Sections.

Genauer: der ladbaren Sections.  Ist aber ja meist sinnvoller, denn
wen interessiert schon die Größe der Symboltabelle, Debug-Daten etc.?

von angehender IT-Professional (Gast)


Lesenswert?

Für mich ist an dieser Stelle nur die Gesamtgröße des Binärfiles wichtig 
die in den uC geschoben wird, die .elf liefert die Sections.

>Das GNU ARM Eclipse Plugin macht das sogar automatisch.
Ich hab hier ein Eclipse mit Arduino-Plugin für den SAM3X. Da werde ich 
von dem ARM Plugin vermutlich nicht so ohne weiteres zehren können.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

angehender IT-Professional schrieb:
> Für mich ist an dieser Stelle nur die Gesamtgröße des Binärfiles wichtig
> die in den uC geschoben wird,

Also die loadable sections aus dem ELF-File, und vermutlich auch
noch die Größe des BSS (RAM, der vom Startup-Code mit Nullen
initialisiert wird).

von angehender IT-Professional (Gast)


Lesenswert?

Autor: Jörg Wunsch (dl8dtl) (Moderator) schrieb:
>Also die loadable sections aus dem ELF-File, und vermutlich auch
>noch die Größe des BSS (RAM, der vom Startup-Code mit Nullen
>initialisiert wird).

Eigentlich nicht.
Test_3_LCD.elf liefert :
1
section             size        addr
2
.text              46216      524288
3
.relocate           2188   537329664
4
.bss                1876   537331852
5
.ARM.attributes       41           0
6
.comment             170           0
7
.debug_info       146173           0
8
.debug_abbrev      15478           0
9
.debug_loc         29132           0
10
.debug_aranges      2312           0
11
.debug_ranges       3568           0
12
.debug_line        29988           0
13
.debug_str         20642           0
14
.debug_frame        6956           0
15
Total             304740

Gleichzeitig ist Test_3_LCD.bin nur 48404 Bytes groß. Der Wert taucht 
nirgends auf - es sei denn... es sei denn, ich könnte hier noch den 
entsprechenden Schalter setzen...

von Peter II (Gast)


Lesenswert?

angehender IT-Professional schrieb:
> Gleichzeitig ist Test_3_LCD.bin nur 48404 Bytes groß. Der Wert taucht
> nirgends auf - es sei denn... es sei denn, ich könnte hier noch den
> entsprechenden Schalter setzen...

warum nutzt du dann nicht einfach ls oder find um die größe vom file 
anzuzeigen?

von angehender IT-Professional (Gast)


Lesenswert?

Ja, schon. Aber darum geht's mir nicht. Auch ist das nicht das Problem, 
ich weiß ja nun was ich arm-none-eabi-size mit auf den Weg geben muß.
Problem ist im Moment eher wie das Makefile erzeugt wird. Da mußsch noch 
n bissel forschen weil das Plugin ganz komische Sachen macht.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

angehender IT-Professional schrieb:
> Gleichzeitig ist Test_3_LCD.bin nur 48404 Bytes groß. Der Wert taucht
> nirgends auf

.text + .relocate

Wenn du jedoch Debugsymbole in deiner ELF-Datei hast, ist sie viel
größer als das, was dann geladen werden muss.

von chrimbo (Gast)


Lesenswert?

Eclipse hat bei den Einstellungen  für das Projekt den Reiter Build 
Steps (oder so ähnlich) und da auch einen post-build commands

von Christopher B. (chrimbo) Benutzerseite


Angehängte Dateien:

Lesenswert?

Hier nochmal ein Bild zur genauern Location.
Funktioniert natuerlich nur, wenn das CDT Plugin installiert ist

lg
Christopher

von angehender IT-Professional (Gast)


Lesenswert?

.text + .relocate
Hey, das ist ja genial. Passt genau. Daß sich hinter .text der Code 
verbirgt, also da muß man auch erst mal drauf kommen.

Was mich aber im Moment am meisten interessiert: Von welchem Teil der 
Toolchain wird das automatische makefile erzeugt?

Und einen Reiter für 'Linker Settings gibt's auch nicht. Hmm.

von angehender IT-Professional (Gast)


Lesenswert?

>Eclipse hat bei den Einstellungen  für das Projekt den Reiter Build
>Steps (oder so ähnlich) und da auch einen post-build commands

Probier ich gleich mal aus. Danke.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

angehender IT-Professional schrieb:
> Daß sich hinter .text der Code verbirgt, also da muß man auch erst mal
> drauf kommen.

„Programmtext“

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.