Forum: Compiler & IDEs Eclipse Programmgrösse Frage


von Karoly Kovacs (Gast)


Lesenswert?

Hallo,

Habe versucht gerade mit Eclipse zu experimentieren.

Mit Überraschung habe ich gesehen, dass die erstellte Programme viel 
grösser sind, als einfach mit avr-gcc erstellte.

Zum Beispiel:

1. Eclipse:
--------------------------------------
Program:   11404 bytes (34.8% Full)
(.text + .data + .bootloader)

Data:       1285 bytes (62.7% Full)
(.data + .bss + .noinit)

2. GCC:
--------------------------------------
Program:   10010 bytes (30.5% Full)
(.text + .data + .bootloader)

Data:       1029 bytes (50.2% Full)
(.data + .bss + .noinit)
--------------------------------------

Ich habe bereits "alles" versucht, habe die Einstellungen in Eclipse so 
gebastelt, dass die Compiler- u. Linkerswitches gleich sind.
(z.B. Optimisation, usw.)

Habt Ihr Ideen, was hier passiert?

Übrigens: das generierte Programm läuft ganz ordentlich, mich stört aber 
den Unterschied (was evtl. manchmal Speicherkritisch sein könnte).

Danke,
Karoly

von Hans M. (hansilein)


Lesenswert?

Benutzt Eclipse denn die gleiche gcc-version?

von Karoly Kovacs (Gast)


Lesenswert?

Danke, Hans, gute Idee, ich habe es geprüft, ja "mein" Eclipse verwendet 
die gleiche GCC Version.
(Zum Test, habe meinen "WinAVR" Folder umbenannt, dann funktioniert 
Eclipse gar nicht.)

Ich habe bereits wirklich alles probiert.

z.B.: Ich habe die Compiler u. Linker Switches aus dem Eclipse in meine 
GCC Befehle kopiert, und habe dann mit AVR GCC kompiliert. (Also 
umgekehrte Richtung.) Kein positives Ergebnis, sondern das gleiche 
Effekt. :(

Karoly

von TestX .. (xaos)


Lesenswert?

eclipse ist nur eine IDE..die macht nix am code...wird an deinen 
compiler einstellungen liegen

von Karoly Kovacs (Gast)


Lesenswert?

Danke Andi, das war sehr hilfreich! :)))

Ehhhh! Das weiss ich genau.

(Habe sogar zweimal geschrieben, dass ich versucht habe, die gleiche 
Einstellungen zu nehmen.)

Karoly

von Karoly Kovacs (Gast)


Lesenswert?

Ich habe es gefunden, weiss ich aber nicht, wie es man lösen kann.

Also, siehe:
WinAVR/doc/avr-libc/avr-libc-user-manual/FAQ.html#faq_libm

Hier steht:
"Typically, system libraries like libm.a are given to the final C 
compiler command line that performs the linking step by adding a flag 
-lm at the end."

Schlüsselwort ist: "at the end".

Wenn man aber in Eclipse die "-lm" option bei "Linker properties/Other 
arguments" einstellt, bekommt man die folgende Linker-Befehlszeile:
"avr-gcc -Wl,-Map,futes.map -lm -mmcu=atmega32"

Also, "-lm" steht nicht am Ende!!!

Die einzige Lósung wäre - meiner Meinung nach -, in Eclipse externe 
Makefile einzustellen.

Oder?

Karoly

von Thomas H. (innot)


Lesenswert?

"Other arguments" ist die falsche Stelle für Libraries. Benutz statt 
dessen "Linker properties -> Libraries" und füg bei "Libraries (-l)" ein 
"m" dazu, dann steht das '-lm' am Ende.

von Karoly Kovacs (Gast)


Lesenswert?

Super! Es funktioniert!

Danke,
Karoly

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.