WinAVR+Eclipse->region text is full

Gast #625382
Lesenswert?
• ▲
▼
-mmcu ist da.

Ich poste mal wie unterschiedlich die einzelnen .c-Files kompiliert und 
gelinkt werden.

Kompilerausgabe aus "PN"+"MFile"+"WinAVR":
1
Compiling C: y1.c
2
avr-gcc -c -mmcu=atmega88 -I. -gstabs -DF_CPU=16000000UL -Os -Wall -Wstrict-prototypes -Wundef -Wunreachable-code -Wsign-compare -Wa,-adhlns=obj/y1.lst  -std=gnu99 -Wundef -MD -MP -MF .dep/y1.o.d y1.c -o obj/y1.o

Kompilerausgabe aus "Eclipse3.3"+"CDT4"+"avr-eclipse"+"WinAVR":
1
Building file: ../y1.c
2
Invoking: Compiler
3
avr-gcc -Wall -g -O2 -Os -c -mmcu=atmega88 -DF_CPU=16000000 -o"y1.obj" "../y1.c"
4
Finished building: ../y1.c

Linkerausgabe aus "PN"+"MFile"+"WinAVR":
1
Linking: x.elf
2
avr-gcc -mmcu=atmega88 -I. -gstabs -DF_CPU=16000000UL -Os -Wall -Wstrict-prototypes -Wundef -Wunreachable-code -Wsign-compare -Wa,-adhlns=obj/y1.o  -std=gnu99 -Wundef -MD -MP -MF .dep/x.elf.d obj/y1.o obj/y2.o obj/y3.o obj/y4.o obj/y5.o obj/y6.o obj/y7.o obj/y8.o obj/y9.o obj/y10.o obj/y11.o obj/y12.o obj/y13.o obj/y14.o obj/y15.o --output x.elf -Wl,-Map=x.map,--cref    -lm

Linkerausgabe aus "Eclipse3.3"+"CDT4"+"avr-eclipse"+"WinAVR":
1
Invoking: Linker
2
avr-gcc -Wl,-Map,.map -mmcu=atmega88 -o"x.elf"  ./y1.obj ./y2.obj ./y3.obj ./y4.obj ./y5.obj ./y6.obj ./y7.obj ./y8.obj ./y9.obj ./y10.obj ./y11.obj ./y12.obj ./y13.obj ./y14.obj ./y15.obj   
3
c:\WinAVR\bin\..\lib\gcc\avr\3.4.6\..\..\..\..\avr\bin\ld.exe: region text is full (x.elf section .text)

Nein, ich nenne meine einzelnen Files nicht x und y- meine Namen sind 
noch bekloppter und deshalb nicht vorzeigbar ;)
Gast #625386
Lesenswert?
• ▲
▼
hallo,
hat vielleicht gar nicts damit zu tun, aber:

>avr-gcc -Wall -g -O2 -Os -c -mmcu=atmega88 -DF_CPU=16000000 -o"y1.obj" "../y1.c"

was bewirkt die zweimalige angabe der optimierung .. grübel
bye kosmo
Gast #625404
Lesenswert?
• ▲
▼
Gerade nochmal nachgeschaut:

"If you use multiple ‘-O’ options, with or without level numbers, the 
last such option is the one that is effective."

Also sollte das -Os von Eclipse das -O2 "überstimmen", weil es an 
letzter Stelle steht.
Moderator Persönliche Seite #625445
Lesenswert?
• ▲
▼
> Warum wird der Code beim Hinzufügen der libm.a kleiner?

Weil (leider) die libgcc.a manchen Code doppelt, der stattdessen
handoptimiert in der libm.a abgelegt worden ist.  Historischer
Ballast.  Der handoptimierte Code sollte besser in die libgcc.a
kommen, aber das war historisch rein als Folge der GCC-Lizenzpolitik
(du musst der FSF dein Copyright abtreten -- auch wenn das nach
deutschem Recht, glaub' ich, null und nichtig ist :) praktisch nicht
möglich.

Mit der von Дмитрий Хмельков (Dmitry Xmelkov) neu geschriebenen
libm, die in avr-libc ab Version 1.6 vorhanden sein wird, sehe ich
aber gute Chancen, dass man diesen historischen Fehler reparieren
kann.
Gast #625482
Lesenswert?
• ▲
▼
Na, zum Glück werden dann ja "von Hand gelinkte" libraries bevorzugt.

Das -lm hätten die "avr-eclipse" Leute ja dann eigentlich auch als 
Standard setzen können.

Ok, ich bedanke mich für die tolle Hilfe hier- da kommt man doch gerne 
öfters mal vorbei ;)!

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.