mikrocontroller.net

Forum: Compiler & IDEs Fehlermeldung von WinAVR


Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,
ich habe diese Fehlermeldung nach der Compilierung meines Programmes
bekommen: "gcc plug-in: Error: Object file not found on expected
location
C:\Programme\Atmel\AVR-Programme\Test_1\default\Test_1.elf".
Ich weiß nicht was der Compiler macht. Denn ich vermute das er
eigentlich den Objektfile erstellen sollte, oder??

Hilffffeeeeeeeeeeeee.......................  !!!!!!!!!

Gruß
Benjamin

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich weiß nicht was der Compiler macht. Denn ich vermute das er
> eigentlich den Objektfile erstellen sollte, oder??

Offensichtlich hat er es nicht getan.  Wird wohl noch 'ne Wanze
drin sein.

Autor: Benjamin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

danke, hat anscheinend gestimmt. aber dann verstehe ich nicht das der
compiler dann versucht auf den object file zu zu greifen.... ?:o(

also jetzt habe ich noch einmal den source file compiliert und bekomme
im fenster "build" diese meldungen:

Build started 20.12.2005 at 11:42:28
avr-gcc  -mmcu=atmega32 -Wall -gdwarf-2 -O0
-Wp,-M,-MP,-MT,Test_1.o,-MF,dep/Test_1.o.d  -c  ../Test_1.c
In file included from ../Test_1.c:6:
C:/Programme/WinAVR/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr 
/iom32.h:41:4:
#error "Include <avr/io.h> instead of this file."
../Test_1.c:31: warning: return type of 'main' is not `int'
make: *** [Test_1.o] Error 1
Build succeeded with 1 Warnings...

warum schreibt in der vorletzten zeile "error" und in der letzten
zeile wird nur eine warnmeldung herausgegeben!? bei einem error sollte
doch ein zugriff auf das object file unterbrochen werden, oder!?

gruß
Benjamin

Autor: Sascha (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Benjamin,

häng doch mal bitte dein Sourcefile mit an damit wir auch mal so nach
dem Fehler suchen können. Denn die Letzte Fehlermeldung die du
geschrieben hast lässt daruf deuten das du einen Fehler in deiner
Source-Datei gemacht hast.

Gruß
   Sascha

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
(Bitte kauf' dir mal 'ne funktionierende Shifttaste.  Das macht das
Lesen für andere einfacher, und du möchstest doch sicher, dass andere
deine Beiträge lesen, oder?)

> warum schreibt in der vorletzten zeile "error" und in der letzten
> zeile wird nur eine warnmeldung herausgegeben!?

Weil das eine ein Fehler ist und das andere eine Warnung.

> bei einem error sollte
> doch ein zugriff auf das object file unterbrochen werden, oder!?

Hat er ja auch, das hat dir schließlich den AVR Studio am Ende wohl
auch gesagt (dass die Objektdatei nicht da war).

Auch wenn er keine Objektdatei ausgibt, compiliert er aber (sofern
möglich) noch weiter.  Schließlich möchtest du doch nicht für jeden
Fehler einzeln einen Compilerlauf anwerfen müssen, ihn beheben, nur um
dann erst den nächsten Fehler zu sehen.  So kannst du mehrere Sachen
auf einmal korrigieren.

Zum Fehler: <avr/iom32.h> ist für ein Nutzerprogramm (bei AVR-GCC)
tabu.  Bitte nimm <avr/io.h> und benutze den -mmcu= Schalter
(letzteres tust du schon).  Ich weiß, beim IAR ist das anders, dort
darf man sowohl <ioavr.h> als auch die einzelnen IO-Header wahlweise
einbinden, dafür muss man zum Umstellen auf einen anderen Prozessor
dort auch vier verschiedene Kommanozeilenschalter anpassen statt nur
des einen -mmcu= beim AVR-GCC.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh, jetzt sehe ich, worüber du gestolpert bist:

> Build succeeded with 1 Warnings...

Das ist natürlich Unfug, er ist eben nicht `succeeded', sondern
`failed'.  Das sollte man als Aufrufer einfach anhand des exit status
herausfinden können, auch ohne alle Fehlermeldungen korrekt geparst zu
haben.

Ich würde dir empfehlen, das mal an Atmel zurückzumelden, damit sie
das reparieren.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und um das Warning [return type of 'main' is not 'int'] auch noch
weg zu kriegen, schreibe:

int main(void)
{
  ....
}

Den GCC erwartet vom main() einen Integer als Rückgabewert!

Gruss  Peter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.