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


von Greg Z. (bc547a)


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)


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)


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)


Lesenswert?

> muss Atmel Studio aber immer auf dem Laufwerk C:\ installiert werden.

Echt jetzt?

von A. B. (Gast)


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)


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)


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)


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

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.