Forum: Compiler & IDEs AS7 "recipe .elf failed" bei neuem Projekt


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Greg Z. (bc547a)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
sicher eine Anfängerfrage, trotzdem komme ich mit der Suchmaschine jetzt 
nicht mehr weiter. Nach vielen Jahren mit AVR Studio 4 und EditPlus 
versuche ich gerade auf V7 umsteigen. Mit Vorgabeeinstellungen 
installiert (Win7 HomePremium), neues GCC C Executable Projekt erstellt, 
auf "Release" gestellt und F7 für Build Solution. Ergebnis: "recipe for 
target 'Empty.elf' failed"

Testweise selbst das "#include <avr/io.h>" rausgeworfen, keine Änderung.

Virenscanner abgestellt und AS7 als Administrator gestartet, keine 
Besserung. Neustart habe ich natürlich auch probiert. In den 
Pfad-/Directorynamen sind keine Sonderzeichen was wohl auch schon zu 
Problemen geführt hat.

Ich habe gelernt daß ein "recipe failed" meist auf fehlende Bezüge 
zurückzuführen ist. Es sollte doch aber in Atmel Studio 7 möglich sein, 
ein - bis auf die 'main'-Funktion - leeres, neues Projekt ohne 
Fehlermeldung zu kompilieren?

Das Directory 'shellutils' in der die make.exe weilt ist übrigens 
komplett klein geschrieben, im Output erscheint es als 'shellUtils' mit 
großem 'U', seltsam.

Hier der Output:
1
------ Build started: Project: Empty, Configuration: Release AVR ------
2
Build started.
3
Project "Empty.cproj" (default targets):
4
Target "PreBuildEvent" skipped, due to false condition; ('$(PreBuildEvent)'!='') was evaluated as (''!='').
5
Target "CoreBuild" in file "C:\Program Files (x86)\Atmel\Studio\7.0\Vs\Compiler.targets" from project "c:\users\wurm_admin\Documents\Atmel Studio\7.0\Empty\Empty\Empty.cproj" (target "Build" depends on it):
6
  Task "RunCompilerTask"
7
    Shell Utils Path C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils
8
    C:\Program Files (x86)\Atmel\Studio\7.0\shellUtils\make.exe all --jobs 4 --output-sync 
9
c:\users\wurm_admin\Documents\Atmel Studio\7.0\Empty\Empty\Release\Makefile(106,1): error: recipe for target 'Empty.elf' failed
10
    make: *** [Empty.elf] Error 1
11
  Done executing task "RunCompilerTask" -- FAILED.
12
Done building target "CoreBuild" in project "Empty.cproj" -- FAILED.
13
Done building project "Empty.cproj" -- FAILED.
14
15
Build FAILED.
16
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========

Vielen Dank für sachdienliche Antworten, auch für solche die mir 
DRINGEND abraten würden auf AS7 umzusteigen. ... Ich weiß noch nicht so 
recht was ich von der Suite halten soll.
Gregor

von A. B. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
AtmelStudio funktioniert in der Regel ordentlich.
************************************************
Wenn Atmel Studio per default in c:\program files (x86) installiert 
wird, können die Leerstellen im Pfad Probleme verursachen. AtmelStudio 
kann ohne Probleme in einem Verzeichnis C:\AS7 installiert werden. ( 
Soviel ich weiss, muss Atmel Studio aber immer auf dem Laufwerk C:\ 
installiert werden. )

Dasselbe gilt für den Pfad zu den Projekten.
*******************************************
AtmelStudio installiert den default Pfad zu den Projekten in der 
Bibliothek Dokumente\Atmel Studio. Bei mir: D:\User\Eigene 
Dokumente\Atmel Studio. Projekte können in beliebigen Verzeichnissen 
erstellt werden, zum Beispiel in x:\AS_proj -> Keine Leerstellen im 
Pfad..

Projekte können auch auf Netzlaufwerken liegen.
**********************************************
Damit das funktioniert, muss ein Netzlaufwerk mit Laufwerk-Buchstaben 
erstellt werden (z.B AvrProj(Z:)). Netzlaufwerke via IP mit Symbol-Namen 
(z.B. \\Zyxel-nsa\data\AvrProj) funktionieren nicht.

Dasselbe gilt für die Toolchain
*******************************
Die default Toolchain wird im Atmel Studio Ordner \toolchain 
installiert.

Toolchains können aber auch in einem separaten Ordner gespeichert 
werden, z.B. in C:\Atmel_Toolchain.

Toolchains können in den Projekt-Eigenschaften installiert und 
ausgewählt werden: 
SolutionExplorer|Projekt|Rechtsklick|Eigenschaften|Advanced|Tools->Optio 
ns->Toolchain->FlavourConfiguration  installiert werden und im 
Auswahl-Fenster Toolchain-Flavour ausgewählt werden.

Falls der SolutionExplorer nicht sichtbar ist: mit View|SolutionExplorer 
sichtbar machen.

EIne moderne Toolchain ist hier verfügbar:
-----------------------------------------
http://blog.zakkemble.net/avr-gcc-builds/

PS: Der Ordner \shellutils von AS7 heisst in AS6.2 \shellUtils


Ein normales Build schaut so aus:
********************************
------ Build started: Project: AVR_Toggle, Configuration: Debug AVR 
------
Build started.
Project "AVR_Toggle.cppproj" (default targets):
Target "PreBuildEvent" skipped, due to false condition; 
('$(PreBuildEvent)'!='') was evaluated as (''!='').
Target "CoreBuild" in file "C:\AtmelStudio_6.2\Vs\Compiler.targets" from 
project "Z:\CPP\Mcucpp-12-2014___\VStudio\AVR_Toggle\AVR_Toggle.cppproj" 
(target "Build" depends on it):
  Task "RunCompilerTask"
    Shell Utils Path C:\AtmelStudio_6.2\shellUtils
    C:\AtmelStudio_6.2\shellUtils\make.exe all
    Building file: .././AVR_Toggle.cpp
    Invoking: AVR8/GNU C Compiler : 8.2.0
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-g++.exe" 
-funsigned-char -funsigned-bitfields -DDEBUG -DF_CPU=20000000ul 
-I"../../../std" -I"../../../mcucpp"  -O1 -ffunction-sections 
-fdata-sections -fpack-struct -fshort-enums -g2 -Wall -mmcu=atmega328p 
-c -std=c++2a -fconcepts -MD -MP -MF "AVR_Toggle.d" -MT"AVR_Toggle.d" 
-MT"AVR_Toggle.o"   -o "AVR_Toggle.o" ".././AVR_Toggle.cpp"
    Finished building: .././AVR_Toggle.cpp
    Building target: AVR_Toggle.elf
    Invoking: AVR8/GNU Linker : 8.2.0
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-g++.exe" 
-o AVR_Toggle.elf  AVR_Toggle.o   -Wl,-Map="AVR_Toggle.map" 
-Wl,--start-group -Wl,-lm  -Wl,--end-group -Wl,--gc-sections 
-mmcu=atmega328p
    Finished building target: AVR_Toggle.elf
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-objcopy.exe 
"  -O ihex -R .eeprom -R .fuse -R .lock -R .signature -R 
.user_signatures  "AVR_Toggle.elf" "AVR_Toggle.hex"
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-objcopy.exe 
"  -j .eeprom  --set-section-flags=.eeprom=alloc,load 
--change-section-lma .eeprom=0  --no-change-warnings -O ihex 
"AVR_Toggle.elf" "AVR_Toggle.eep" || exit 0
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-objdump.exe 
"  -h -S "AVR_Toggle.elf" > "AVR_Toggle.lss"
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-objcopy.exe 
"  -O srec -R .eeprom -R .fuse -R .lock -R .signature -R 
.user_signatures "AVR_Toggle.elf" "AVR_Toggle.srec"
    "C:\Atmel_Toolchain\AVR8_GCC\avr-gcc-8.2.0-x64-mingw\bin\avr-size.exe" 
"AVR_Toggle.elf"
       text     data      bss      dec      hex  filename
        136        0        0      136       88  AVR_Toggle.elf
  Done executing task "RunCompilerTask".
  Using "RunOutputFileVerifyTask" task from assembly 
"C:\AtmelStudio_6.2\Extensions\Application\AvrGCC.dll".
  Task "RunOutputFileVerifyTask"
        Program Memory Usage   :  0 bytes   0.0 % Full
        Data Memory Usage     :  0 bytes   0.0 % Full
  Done executing task "RunOutputFileVerifyTask".
Done building target "CoreBuild" in project "AVR_Toggle.cppproj".
Target "PostBuildEvent" skipped, due to false condition; 
('$(PostBuildEvent)' != '') was evaluated as ('' != '').
Target "Build" in file "C:\AtmelStudio_6.2\Vs\Avr.common.targets" from 
project "Z:\CPP\Mcucpp-12-2014___\VStudio\AVR_Toggle\AVR_Toggle.cppproj" 
(entry point):
Done building target "Build" in project "AVR_Toggle.cppproj".
Done building project "AVR_Toggle.cppproj".

Build succeeded.
========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped 
==========

PS: RunOutputFileVerifyTask funktioniert mit aktuellen Toolchains nicht 
richtig -> 0%Full

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
A. B. schrieb:
> AtmelStudio funktioniert in der Regel ordentlich.
> ************************************************
> Wenn Atmel Studio per default in c:\program files (x86) installiert
> wird, können die Leerstellen im Pfad Probleme verursachen.

Da das der default-Pfad ist, in den das Studio sich installiert, müsten 
99% aller Nutzer damit Probleme haben. Haben Sie aber nicht.
Daran liegt es nicht.

> Dasselbe gilt für den Pfad zu den Projekten.

So ist es. Mit einem Projekt in einem Unterordner von "Atmel Studio" 
lässt sich der Fehler bei mir nachstellen, egal, wo "Atmel Studio" auch 
liegt.

Leerzeichen und Sonderzeichen im Projektpfad sind halt zu vermeiden.

Oliver

von schlubbidu (Gast)


Bewertung
0 lesenswert
nicht lesenswert
> muss Atmel Studio aber immer auf dem Laufwerk C:\ installiert werden.

Echt jetzt?

von A. B. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
schlubbidu schrieb:
>> muss Atmel Studio aber immer auf dem Laufwerk C:\ installiert werden.
>
> Echt jetzt?

Wurde mal so beschrieben:
************************
Beitrag "Atmel Studio 7 wird nicht in meinen gewählten Installationspfad installiert (Windows 10)."

von Greg Z. (bc547a)


Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für die Antworten. Nachdem eine Neuinstallation in C:\AS7 
und Ablage der Projekte in C:\AS7Projects keine Besserung brachte fand 
ich dann irgendwann endlich die Ursache des Problems:

Der Virenscanner (Comodo Auto-Containment) eines anderen, aktiven 
Nutzerprofiles auf demselben Rechner hatte den Output der Make.exe in 
'C:\Users\wurm_admin\AppData\Local\Temp\' isoliert bzw. blockiert. Mir 
war nicht klar, daß ein Virenscanner benutzerübergreifend tätig werden 
kann bzw. darf.

von Apollo M. (Firma: @home) (majortom)


Bewertung
0 lesenswert
nicht lesenswert
A. B. schrieb:
> schlubbidu schrieb:
>>> muss Atmel Studio aber immer auf dem Laufwerk C:\ installiert werden.
>>
>> Echt jetzt?
>
> Wurde mal so beschrieben:
> ************************
> Beitrag "Atmel Studio 7 wird nicht in meinen gewählten Installationspfad
> installiert (Windows 10)."

kann ich nicht bestätigen! habe win8.1/10 und as7 in einem 
unterverzeichnis auf e: ohne probleme zu laufen.


mt

von Oliver S. (oliverso)


Bewertung
0 lesenswert
nicht lesenswert
Greg Z. schrieb:
> Mir
> war nicht klar, daß ein Virenscanner benutzerübergreifend tätig werden
> kann bzw. darf.

Na ja, mit ziemlicher Sicherheit ist ein Virenscanner unter Windows eine 
systemweite Installation, und keine eines Benutzerprofils.

Oliver

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]
  • [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.