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:
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
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
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
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.
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
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
Eine eigene Frage?
Dieser Thread ist über 7 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.