Hallo. Ich versuche gerade etwas mit avr-gcc zu compilieren. Ich bekomme jedoch folgende Fehlermeldung: could not find output section .bss for input section .bss und: final link failed: Nonrepresentable section on output Diese Meldungen wirft linker ld raus. Kann mir jemand vielleicht sagen was das bedeutet ? Wäre sehr dankbar für die Antwort auf diese Frage.
Reich' uns mal bitte die Kommandozeilen von Compiler und Linker nach, die du benutzt hast.
Welche GCC Version benutzt du? Wie sieht das Linker Control Script (*.ld) aus und hast du eventuell eine leere .data Section vor der .bss section und ein Alignment-Problem? Ein Stück Minimalprogrammcode bei dem das Problem auftritt, wäre auch nicht schlecht.
Also Kommandozeilen sehen wie folgt aus: /*hier keine probleme*/ avr-gcc -Wall -mmcu=atmega16 -Os -c bsp1.c /*hier die besagte Fehlermeldung*/ avr-gcc -Wall -mmcu=atmega16 -o bsp1.out -Wl,-Map,bsp1.map bsp1.o /*Noch mal ganze Fehlermeldung*/ /opt/cross/lib64/gcc/avr/4.0.2/../../../../avr/bin/ld: bsp1.out: could not find output section .bss for input section .bss /opt/cross/lib64/gcc/avr/4.0.2/../../../../avr/bin/ld: final link failed: Nonrepresentable section on output make: *** [bsp1.out] Fehler 1
>>Welche GCC Version 4.0.2 >>>Wie sieht das Linker Control Script (*.ld) Tut mir leid, ich habe keine sollche Datei, die irgendwie so heisst (*.ld) >>hast du eventuell eine leere .data Section vor der .bss section und ein Alignment-Problem? Oh, tut mir leid aber jetzt verstehe kein Wort. Ich wusste nicht das ich eine .data Section habe uns chon gar nicht ob sie leer ist oder nicht. Ich weiss leider nicht was ein Alignment-Problem ist, also ich weiss es nicht ob ich ihn habe. >>Ein Stück Minimalprogrammcode int main() { return 0; } Schon bei solchem code tritt der Fehler auf.
Sorry, die haben bei AVR andere Endungen *.x* und stehen im zentralen avr/lib/ldscripts Verzeichnis. Ich denke nicht, dass dann du dort eine Abweichung zur Standardinstallation hast. Das Alignment-Problem bei leeren Sections habe ich wahrscheinlich falsch vom WinARM her im Hinterkopf. Es wäre interessant, ob dies bei deinem avr-gcc normal funktioniert:
1 | const int dummyData = 1234; // dummyData in .data anlegen |
2 | int dummyBss; // dummyBss in .bss (.comm) anlegen |
3 | |
4 | int main() |
5 | {
|
6 | return 0; |
7 | }
|
Du benutzt den avr-gcc unter Linux? Es gibt ähnliche Fehlerberichte im AVRFreaks AVR GCC Forum: http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=35213&highlight=output+section+input Das Problem dort konnte von den zwei Betroffenen durch eine Neuinstallation aus einer aktuelleren Distribution behoben werden.
Danke für die Antwort Stefan Die *.x* Dateien sind da wo sie sein sollen, aber ob sie auch korrekt sind? >>Es wäre interessant ob dies bei deinem avr-gcc.. Also inzwischen habe ich avr-gcc aus den Quellen kompiliert (quellen von 3.4.2 hatte ich noch auf der Festplatte). Diese Version hat damit kein Problem (scheint so jedenfalls, hex-Datei wird erstellt, und es gibt keine Warnungen) >>Du benutzt den avr-gcc unter Linux? Ja. Es ist also einfach so, dass es mit der Installation was nicht stimmt. Bei mir war es genau das gleiche Problem wie unter dem Link beschrieben. Ich habe halt ein paar Monate nichts mit AVRs gemacht, heute wollte ich mir auf die schnelle avr-gcc instalieren. Habe mir schnell Packete zusammengesucht und installiert, aber ausgerechnet die Kaputten.
Ich glaube mich zu erinnern, dass das ein Problem mit GCC 4.0.x sein könnte. Wenn du einen 4.xer nehmen willst, nimm 4.1.x, die tun ordentlich.
Ja kann schon sein, bei neueren Packete mit avr-gcc-4.1.2, die ich gerade installiert habe, scheint alles in Ordnung zu sein. Danke für die Antworten.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.