C Programm wird nicht kompilliert

Gast #1599971
Hallo,

wenn ich versuche, mein C Programm zu kompillieren, kommt die Meldung 
"Das Programm avr1.exe hat Fehler verursacht und wird geschlossen. 
Starten Sie das Programm neu."
Der Quellcode:
1
#include <avr/io.h>
2

3
int main(void)
4
{
5

6
    int n;
7
    DDRB = 0x08;
8
    while(1)
9
    {
10
        PORTB = 8;
11
            for (n = 0; n < 30000; n++);
12
        PORTB = 0;
13
            for (n = 0; n < 30000; n++);
14
    }
15

16
    return 1;
17
}
Dann kommt noch die Meldung:
Process terminated with status 1 (0 minutes, 1 seconds)
0 errors, 0 warnings
Und im Projektverzeichniss finde ich dann kein Hex File. Ich benutze 
Code::Blocks und habe auch schon den Pfad zu WinAVR udn den Compiler 
eingestellt.
Gast
Ja... denk mal drüber nach, warum man (auch wenn es nie erreicht werden 
sollte bei der Entlosschleife) ein return macht....

und dann schau mal, was dein return macht ;)

Also ganz simple, das letzte ruturn sollte ein return 0 sein, damit klar 
ist, das keine Fehler aufgetreten sind, daran stört sich dein compiler 
offensichtlich...
Gast
Jetzt habe ich das geändert aber trotzdem kommt immer noch die Meldung 
"cc1.exe hat Fehler verursacht und wird beendet. Starten Sie das 
Programm neu." cc1.exe liegt in e:\WinAVR\libexec\gcc\avr\4.1.1
Gast
Genmutant schrieb:
> Ich vermute eher, du startest nebenbei das Programm... Das wird dann
>
> natürlich auf deinem PC nicht funktionieren :D

Hallo,

wie denn, wenn es weder ein Hex-File, noch eine exe noch sont irgendein 
File gibt? (Mal abgesehen von dem main.c)
Gast
Und wo kommt dann die Fehlermeldung deiner Meinung nach her, dass deine 
nichtexistente .exe (?) einen Fehler verursacht hat?

"Das Programm avr1.exe hat Fehler verursacht und wird geschlossen."
mbuettner schrieb:
> Jetzt habe ich das geändert aber trotzdem kommt immer noch die Meldung
> "cc1.exe hat Fehler verursacht und wird beendet.

Du solltest dich mit dir selbst einigen, ob du Fehlermeldungen exakt 
widergeben willst oder nicht.
Im Eröffnungsposting war das noch

"Das Programm avr1.exe hat Fehler verursacht

und das ist ein ganz anderes Programm.

Wer hat jetzt den Fehler verursacht:

  cc1.exe       das ist Teil des Compilers.
                d.h. du hast einen Bug im Compiler gefunden, der ihn
                zum Absturz bringt.
                (auch wenn ich das kaum glauben mag)

  avr1.exe      das ist seltsam, denn wo hättest du ein EXE her
                das auf deinem PC läuft?
mbuettner schrieb:
> "Das Programm avr1.exe hat Fehler verursacht und wird geschlossen.
> Starten Sie das Programm neu."

Dann mußt Du feststellen, zu welcher Toolchain diese Programm gehört.
Es gehört nicht zu WINAVR.

Ich würde zu WINAVR das AVRStudio empfehlen, das ist anfängertauglich 
und narrensicher.
Und wenn es damit funktioniert, kannst Du meinetwegen mit 
komplizierteren Toolchains rumbasteln.

Dein Programm wird korrekt compiliert:
1
AVR Memory Usage
2
----------------
3
Device: attiny25
4

5
Program:      60 bytes (2.9% Full)
6
(.text + .data + .bootloader)
7

8
Data:          0 bytes (0.0% Full)
9
(.data + .bss + .noinit)



Peter
Habe gerade mal aus reiner Neugier "Code::Blocks" (16 January 2010 
build) zusätzlich zu einer bestehenden WinAVR+AVRStudio-Installation 
installiert. Funktioniert problemlos, kompiliert ohne Schwierigkeiten 
und erzeugt ein .hex-File im vorher angegebenen Projektverzeichnis.

Eine Datei namens "avr1.exe" konnte ich allerdings nirgendwo entdecken, 
weder in WinAVR noch in Code::Blocks. Kann es sein, dass dein Projekt so 
heißt? Ich vermute mal, abgesehen von einer möglicherweise fehlerhaften 
Installation, du hast da irgendwas falsch eingestellt, deine IDE meint 
vielleicht da würde irgendwas zu "avr1"-(x86) kompiliert werden und 
versucht das dann zu linken und anschließend zu starten, das gibt dann 
im besten Fall eine fehlerhafte .exe oder eine 0-Byte-Datei, die beim 
Versuch sie zu starten diese Fehlermeldung verursacht.

wIE GESAGT prinzipiell funktioniert das alles, und ich habe weder bei 
meiner WinAVR-, noch bei meiner AVRStudio-, noch bei der 
Code::Blocks-Installation besondere Einstellungen vorgenommen, (hat dir 
Code::Blocks angezeigt, dass es AVR-GCC "detected" hat?).


P.S.:

Die "for (n = 0; n < 30000; n++);", werden in der Standardeinstellung im 
Realease-Build ersatzlos wegkompiliert.
mbuettner schrieb:
> Hmm, jetzt habe ich zwei main.elf, eine main.elf.hex und eine
> main.elf.eep.hex. Welche soll ich in den Microcontroller laden?
> *Nachdenk*

Die main.elf.hex !

Die main.elf.eep.hex ist eine EPROM-Datei, da hast du bis jetzt aber 
noch nichts drin, kannst natürlich auch beide Dateien an den Controller 
schicken.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.