Hallo,
jetzt habe ich endlich Atmel Studio 7 auf Windows 10 installiert und
wollte ein Projekt, das zuvor unter Windows 7 problemlos durch den
Compiler lief (auch Atmel Studio 7), neu compilieren. Das sollte der
Probelauf mit einer bekannten und funktionierenden Software sein, um
diese dann von hier aus weiter zu entwickeln.
Es wurde mit dem Wizard ein neues Projekt erstellt, die Source-Files
hineinkopiert und dem Projekt hinzugefügt, außerdem F_CPU definiert.
Wenn ich in main.c die Include-Dateien anklicke, z.B. power.h, wird in
der Zeile oben der Pfad zu dieser Datei angezeigt. Sie wird also von der
IDE gefunden.
Wenn ich dann compiliere, bekomme ich den Fehler "recipe for target
'main.o' failed". Es werden tatsächlich einige Definitionen aus der
erwähnten Datei power.h nicht gefunden. Diese Include-Datei scheint aber
gefunden zu werden, sonst würde das doch sicher bemängelt.
Ich habe trotzdem versucht, den Include-Pfad an verschiedener Stelle
anzugeben - ohne Erfolg.
Das Atmel Studio als Admin auszuführen hat auch nicht geholfen.
Deshalb die Bitte, dass von Euch jemand drauf schaut und mir einen Tip
geben kann. Vielleicht ist es nur eine Einstellung im Atmel Studio?
Vielen Dank!
Gruß
Sören
Hier nocht die Ausgabe des Compilers:
Sören schrieb:> Es wurde mit dem Wizard ein neues Projekt erstellt,
Wer war das? Frage den der das getan hat. Der kann dir
sicher sagen was er gemacht und was er falsch gemacht hat.
Wenn eine Header-Datei eingebunden wird, die nicht existiert, gibt es
die Fehlermeldung
error: avr/powerX.h: No such file or directory
Wenn power.h ganz auskommentiert ist, sind die Fehlermeldungen gleich
wie oben beschrieben.
Im Pfad C:\Program Files
(x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include\avr
findet sich power.h und enthält auch die reklamierten Definitionen.
Als Default-Include-Pfade sind angegeben:
C:\Program Files
(x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\avr\include
C:\Program Files
(x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9
.2\include
C:\Program Files
(x86)\Atmel\Studio\7.0\toolchain\avr8\avr8-gnu-toolchain\lib\gcc\avr\4.9
.2\include-fixed
Ich bin ratlos.
Ich vermute es liegt an einem fehlenden define, sodass der entsprechende
Code im Präprocessor ausgelassen wird.
Da ich den genauen Code nicht kenne und auch deine Version von power.h
nicht, werde ich mal beschreiben, wie ich den Fehler gesucht habe.
1) Die Datei power.h wird nach deine Aussage inkludiert. Der Compiler
beschwert sich nicht, dass er sie finden kann, also hat er die Datei
gefunden.
2) "recipe for target 'main.o' failed" heißt, dass der Compiler aus
irgendeinem Grund main.c nicht bauen konnte. Schaut man sich den ersten
Fehler danach an "error: 'clock_div_2' undeclared", dann sieht man, dass
der Compile clock_div_2 nicht kennt, es also nicht deklariert wurde.
3) Ich suche in der power.h nach clock_div_2 und finde es auch. Nachdem
power.h aber inkludiert wurde, muss es also ein #ifdef sein, dass
verhindert, dass der entsprechende Code beim Compilieren verwendet wird.
Scrollt man dann ein bisschen weiter nach oben sieht man eine ganze
Reihe von "#if defined(_AVR_AT90CAN32_)" ...
Der Fehler liegt vermutlich in dem fehlenden define für den
Prozessortyp.
Wie das allerdings über den Wizard eingestellt werden kann, weiß nicht,
weil ich nicht mit Atmegastudio arbeite.
Super! Danke, das war der entscheidende Tip!
Als Controller wurde der tatsächlich verwendete
ATmega88PA
eingestellt.
Damit kommt es zu der oben beschriebenen Fehlermeldung.
Jetzt habe ich den Controller mal geändert auf
ATmega88P
Und siehe da, der Fehler ist verschwunden.
Jetzt will ich ungern das Header-Filer power.h editieren
und meinen Controller hinzufügen.
Deshalb werde ich jetzt erst mal den ATmega88P eingestellt
lassen in der Annahme, dass er sich zum PA hin nicht unter-
scheidet.
Sören schrieb:> Jetzt habe ich den Controller mal geändert auf> ATmega88P>> Und siehe da, der Fehler ist verschwunden.
Bugreport an den Hersteller senden. Klingt nach einem Copy&Paste Fehler,
der schlicht übersehen wurde.
Hallo zusammen,
ich habe mich mit dem Fehler lange rumgeärgert, deshalb wollte ich meine
Lösung beitragen, das obige hat bei mir leider nicht geholfen.
Im Anhang ist ein Bild mit allen Funktionen, die ich bei Bitdefender
freigeben musste, um keine entsprechende Fehlermeldung zu erhalten
(recipe for target 'main.o' failed). Der Virenschutz möchte hier den
Ordner (C:\Users\admin\Documents\Atmel
Studio\7.0\GccApplication9\GccApplication9\Debug) vor unerlaubten
Zugriff schützen, bei Bitdefender gibt es mehrere Möglichkeiten, eine
Ausnahme hinzuzufügen, dieser muss hier unter sichere Dateien eingefügt
werden (siehe Anhang).
as.exe
avr-objcopy.exe
cc1.exe
ld.exe
Meine Bedingungen:
Windows 10 64bit
AtmelStudio 7 (Version: 7.0.2397)
Liebe Grüße und viel Erfolg