Forum: Compiler & IDEs WINAVR - Makefile - Problem: Was ist "bfd-target"?


von Chris Blues (Gast)


Lesenswert?

Ich stell gerade von der "avrfreaks"-Version auf die WINAVR um. Schade, 
dass die Installation von der hier nicht auch beschrieben ist, dann 
würde man es kapieren.
Ich hab das Makefile jetzt soweit, dass es anfängt zu arbeiten am Ende 
kommt aber die Fehlermeldung:

avr-objcopy -O avrobj -R .eeprom test_lcd.elf test_lcd.obj
avr-objcopy: test_lcd.obj: Invalid bfd target
make: *** [test_lcd.obj] Error 1

WAS ist ein "invalid bfd target"?

Und bitte, bitte, BITTE, verweist mich nicht auf die AVRFREAKS - Seite. 
So gut wie eure Seite auf mikrocontroller.net ist, so unverständlich und 
nutzlos waren die bisher für mich.

Vielen Dank für eure Hilfe.

Chris

von Chris Blues (Gast)


Lesenswert?

Nachtrag:

Mir wäre auch geholfen, wenn man mir ein Universal-Makefile für WinAVR 
zukommen lässt. Das mitgelieferte funktioniert irgendwie nicht. Und 
ausser der (ein paar hundert Seiten langen) GNU-Anleitung hab ich nichts 
dazu gefunden. Steht irgendwo (möglichst auf Deutsch), wie so ein 
Makefile aufgebaut ist?

Chris

von AndreasH (Gast)


Lesenswert?

Eine Anleitung in deutsch wie ein Makefile aufgebaut sein muss, findest 
Du hier:
http://rfhs8012.fh-regensburg.de/~opel/docs/makefiles.php

Mußt Du dann nur noch für winavr ändern.

von Chris Blues (Gast)


Lesenswert?

Danke AndreasH,

das hilft sicher weiter, vielleicht versteh ich die makefiles damit und 
finde den Fehler :-).

Chris

PS: diesen "bfd-target" Fehler hat noch niemand gehört? Hab irgendwie 
das Gefühl, es hat mit einem falschen Eintrag zu einem Ordner zu tun, 
aber ich da nix. Das Problem ist halt, dass ich das avr-freaks-makefile 
mit winavr verwende und es umschreibe...

von Joerg Wunsch (Gast)


Lesenswert?

Wofür "bfd" steht, weiß ich nicht genau.  Die Fehlermeldung meint, daß
das Programm mit dem von Dir gewünschten Ausgabedateiformat nichts
anfangen kann.  Also RTFM...  Ah ja, -O beschreibt laut man page den
"bfdname" des Ausgabeformates.  "avrobj" ist ein ungültiges 
Ausgabeformat.
Ich vermute mal, daß damit das Atmel-AVR-COFF gemeint wäre, das vom
AVRstudio verstanden wird.  Dieses Format ist den GNU-Tools native nicht
bekannt.  (Es gab aber offenbar früher einen Hack, mit dem man dieses
direkt erzeugen konnte, wahrscheinlich war der in der avrfreaks-Version
eingebaut.  Weiß ich aber nicht genau, habe kein Windows und kein
AVRstudio.)

Dafür gibt es derzeit objtool als Konvertierungswerkzeug.  Eric will
sich aber bemühen, ob nicht der alte Hack doch irgendwie Einzug in die
offiziellen binutils finden kann (zumindest, wenn diese für das Target
"avr" compiliert werden).

Die generischen Makefiles haben alle so ihre Probleme.  Das größte
seht Ihr hier alle selbst gerade: sie werden als Blackbox benutzt,
ohne daß der Anwender die geringste Ahnung hat, wie "make"
funktioniert.  make ist eigentlich nicht so schwer zu lernen, aber
sorry, in einem gräßlichen Nicht-Editor eines HTML-Formulars kann ich
das auch nicht reinhämmern.  Das beste ist es sich eigentlich, ein
gutes kleines Beispiel zu schnappen und dies dann anhand der
Originaldoku zu verstehen.  In der nächsten WinAVR-Version werden die
offiziellen examples der avr-libc mit dabei sein, die besitzen derartige
"klein aber fein" Makefiles.

Sorry, ob es dafür was in Deutsch gibt, habe ich keinen Schimmer.  Wozu
auch?  Wer die AVR-Datenblätter versteht, sollte auch genug Englisch
können, die make-Doku zu verstehen...  (Und wer die AVR-Datenblätter
nicht versteht, hat wohl ohnehin schlechte Karten.)  Ich glaube, in
dieser Branche sind fundamentale Englischkenntnisse einfach 
Voraussetzung
fürs Überleben.

von Chris Blues (Gast)


Lesenswert?

Schon klar, dass man Englisch können muss, aber warum soll man sichs 
immer schwer machen ;-)
Ist das selbe wie mit dem make-File: solang es geht, gibt es keinen 
Grund sich damit zu beschäftigen. Mein Programm für den AVR8515 mit 
angeschlossenem LCD und 4x3-Matrix-Tastatur funktioniert, und es hapert 
nur noch an der Ausgabe einer einzigen Zahl, die aus den Eingaben 
berechnet wird. Der Printf-Befehl aus diesem Forum wirft meine 
LCD-Anzeige durcheinander. Also brauch ich andere Befehle, die in diesem 
Forum teilweise beschrieben werden. Dazu muss ich aber eine aktuellere 
Vrsion als die von avr-freaks benutzen. also WINAVR. Und dazu muss ich 
ein neues Makefile erzeugen... und das nur wegen der Ausgabe einer 
einzigen Zahl...

Also nichts für ungut Joerg, dass man hier Englisch können muß, ist 
klar, warum aber, sobald einer nach einem Tutorial fragt, als erstes 
kommt "auf deutsch oder englisch? in englisch haben mehr was davon" 
versteh ich nicht. Warum nicht auch mal für die eigene Sprache was tun 
und es den Leuten leicht machen. Wenn Englischsprachige das Tutorial gut 
finden, sollen sie es sich übersetzen ;-) Bischen mehr Mut zur eigenen 
Sprache! (OK, ich komm von der Germanistik her... 
Geisteswissenschaftler... is ja gut... ;-)

Bis dann,

Chris

von Chris Blues (Gast)


Lesenswert?

Ach ja! In diesem Zusammenhang möchte ich mich bei Christian Schifferle 
bedanken :-) Unheimlich viel Arbeit in ein Tutorial, dass "nur" 
Deutschsprachige lesen können ;-).

DANKE! GEILES TEIL!

Chris :-)

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.