Forum: Compiler & IDEs Fehler beim compilieren


von mfd (Gast)


Angehängte Dateien:

Lesenswert?

Hey Leute,
ich bräuchte mal eure Hilfe. Ich habe mir ein Buch gekauft um mit C das
Programmieren von Mikrocontrollern zu lernen. Der Code, den ich
angehängt habe, steht so im Buch. Habe auch alles gemacht, was im Buch
stand (glaub ich). Aber es funzt nicht. Nach verzweifelter google-suche
bin ich bei euch gelandet.
Ich bitte um eure Hilfe. :-)

Vielen Dank
mfd

von Marian (Gast)


Lesenswert?

Nutzt du das AVR-Studio? Es sieht so aus als ob du kein oder ein
falsches Makefile hast.

von mfd (Gast)


Angehängte Dateien:

Lesenswert?

Seuftz ... :-)
ich nutze im Moment WinAVR- Programmers Notepad2.
Du hast anscheint recht ... habe an der Makefile rumgestrickt und ...
einen neuen Fehler bekommen. (alte ist weg)Ja, es sieht so aus, als
würde es an meiner makefile liegen.
Wäre lieb, wenn ihr mal über diese datei guckt... hänge sie mal an.

Vielen Dank
mfd

von mfd (Gast)


Lesenswert?

achso ... der neue fehler ist:

> "make" extcoff
make: *** No rule to make target `blink.o', needed by `blink.elf'.
Stop.

> Process Exit Code: 2
> Time Taken: 00:00

von peter bb (Gast)


Lesenswert?

wenn du den ganz neun winavr-c (april2006) hast , ist dies ein
winavr-bug.

von peter bb (Gast)


Lesenswert?

nimm dann wieder winavr-c von januar 2006

von Thomas (Gast)


Lesenswert?

Wie heißt denn deine Datei mit dem C-Quellcode?

von Peter (Gast)


Lesenswert?

@marius

1.)
Ich glaube Dir nicht, dass Du dieses Beispiel genau so im Buch gefunden
hast! Allenfals hast Du es aus dem Buch mit gaaaaaanz vielen Tipfehlern
abgeschrieben! Zum Beispiel etwas ganz wichtiges: C unterscheidet
zwischen GROSS und klein-Schreibung!

2.)
Nimm das neuste WinAVR vom April und das AVR-Studio 4.12 mit dem
neusten ServicePack 3! Als Anfänger würde ich vorerst die Finger vom
Makefile lassen, AVR-Studio macht es für Dich!

3.)
So funktioniert Dein Beispiel. Suche die 10 Unterschiede zu Deiner
Version selber! ;o))
//--------------------------------------
#include   <avr\io.h>

volatile int i;

int main (void)
{
  DDRB=0xff;
  while (1)
  {
    for (i=0;i<0xf000;i++)
    {
    }
    PORTB++;
  }
}
//--------------------------------------


4.)
Bei Fragen: Lesen, lesen und nochmals lesen...!


5.)
Der Weg ist lang und voller Stolpersteine. Dennoch viel Glück und lass
Dich nicht so schnell entmuigen....

von mfd (Gast)


Lesenswert?

@Peter

ich danke dir erstmal für die Hilfe. Ja, ich bin voll entmutigt. aber
wirklich sehr. weil ich sitze an diesem blödem ding schon urig lange.
bin anscheint zu blöd dafür!

Doch, habe den text so aus einem buch abgeschrieben, aber auf groß und
kleinschreibung nicht geachtet. genauso auf void main(void), wo eine
leerzeile dabei war. sonst ist es dasselbe, wie aus dem buch.

In meinem buch werden ein paar schritte beschrieben, die man machen
muss, die ich auch denke gemacht zu haben bin mir ziemlich sicher.
(makefile abändern, io.h und iom8.h kopieren, autoexec.bat einen path
einfügen, unter tool make anlegen und in gcc2 auch einen pfad anlegen.
funzt nicht.
Jeztt hab ich es so gemacht wie du gesagt hast.
habe alles runtergeschmissen, altes rückgängig gemacht und mir die
april-version gedownloaded. dann habe ich nichts verändert, sondern
einfach nur dein Programm eingefügt. Hat aber wieder Fehler angezeigt.
no rule to make target ... und so weiter. dann habe ich entgegen deines
rates die makefile in mein zielverzeichnis kopiert und in der makefile
statt target meinen zielordner eingegebenen. jetzt spuckt er mir das
aus, was ich als txt datei angehängt habe. außerdem legt er in dem
zielverzeichnniss zwei neue ordner an. .dep und obj. mehr macht er
nicht.
ich bin am ende meines lateins ... was kann ich machen, das datt geht?
Ich will nur, das ich es hinbekomme, das der pc einfach läuft und das
ich sicher gehen kann, das es an meinem geschriebenem progi scheitert,
denn dann kann ich mir meist selbst helfen.
so wie jetzt steh ich ahnungslos und habe noch nicht mal einen ansatz!
vielen dank
marius

von mfd (Gast)


Angehängte Dateien:

Lesenswert?

ups .. die datei vergessen anzuhängen ...

von Karl H. (kbuchegg)


Lesenswert?

Nimm dir einen Rat zu Herzen:
Hol dir von Atmel das AVR-Studio. Spiel auch noch das
Servicepack 3 dort ein, und du bist das Problem des makefiles
los.

Du sagst dem AVR-Studio dann nur noch, dass du ein neues
Projekt anfangen möchtest, wählst aus dass es C sein soll,
legst Speicherort und Namen fest, wählst aus welchen Prozessor
du haben möchtest und AVR-Studio macht den Rest. Es öffnet
dir sogar gleich noch das Source-Code File, sodass du
gleich drauflos programmieren kannst.

von Karl H. (kbuchegg)


Lesenswert?

Um es nochmal ganz deutlich zu sagen:
Dein Problem hat erst mal nichts mit der Programmiersprache C
zu tun.
Dein Problem ist die Bedienung der sog. Tool-Chain (also
der Kette aus Compiler, Linker), die dafür sorgt dass letztendlich
der Programmtext in ein tatsächliches Programm überführt wird.
Dafür gibt es ein Hilfsmittel namens make, dass über eine
Steuerdatei gesteuert wird. Und genau diese Steuerdatei ist
dein jetziges Problem. Glücklicherweise kann man diese Steuerdatei
auch mit einigen Vorgaben automatisch erstellen. Und genau das
kann AVR-Studio für dich übernehmen.
Warte erst mal ab, bis du den Debugger im AVR-Studio entdeckst.
Spätestens dann wirst du AVR-Studio nicht mehr missen wollen.

von Marian (Gast)


Lesenswert?

@marius: Du hast übrigens immernoch das gleiche Problem wie am Anfang.
Ich weiß nicht wieso aber AVR-Studio will immer ein hex-file oder
.elf-file kreieren das genauso heisst wie das Projekt. Wenn du nun dein
main-file Namen änderst, musst du das auch im Makefile ansagen. Du musst
bei Target.elf(oder wie das heisst) den Namen des Projektes eingeben,
also das was in der Fehlermeldung steht.
Ich habe das Problem auch immer wenn ich einen Code von anderen Leuten
ausprobieren möchte. Ich mache mir dann immer ein neues Projekt auf,
kopiere alle Dateien in den Projektordner und sage im Makefile
explizit, was er mir für ein elf-file bauen soll. Du musst natürlich
auch alle C-Files mit angeben, damit er damit was anfangen kann.

von peter bb (Gast)


Lesenswert?

Du hast anscheint recht ... habe an der Makefile rumgestrickt und ...


warum bastelt ihr immer an der makefile rum, versteh ich nicht.
ihr nehmt das programm mfile und beantwortet alle fragen, die ihr
beantwortet haben damit der avr läuft und ab geht die post.
es wird dann nicht mehr an das makefile rumgebastelt.

von mfd (Gast)


Lesenswert?

Hey, leute danke erstmal für die mühe .... mit avrstudio funzt es
prächtig.
was ich nicht verstehe ist, das es auch mit mfile nicht läuft und den
selben fehler ausspuckt. Win2000? ich kann alles verstellen und
veränder den fehler nicht. angefangen vom programmer bis hin zum
debug-format. wobei es ziemlich sicher scheint, das es an der makeflie
liegt, weil wenn ich sie rausnehme gibt er mir einen andern fehler an.

ich gebe es jetzt an der stelle auf und freue mich einfach, das es
unterm avrstudio läuft. vorher ging es ja nicht wegen meines
programmes.
ärgerlich ist es allemal ohne zu wissen, woran es scheitert, aufzugeben
mit winavr zu programmieren.

danke an euch alle, die hier gepostet haben!
gruß
marius

von mfd (Gast)


Lesenswert?

Möchte nochmal nachtragen:
An der makefile liegt es doch nicht. habe die makefile aus AVRstudio
für WinAVR benutzt. Das kam dabei raus:

> "make.exe" program
make.exe: *** No rule to make target `program'.  Stop.
> Process Exit Code: 2
> Time Taken: 00:00

gruß
marius

von peter bb (Gast)


Lesenswert?

> "make.exe" program
make.
exe: *** No rule to make target `obj/main.o', needed by
`lauftest.elf'.  Stop.

> Process Exit Code: 2

> Time Taken: 00:00


das ist ein bug in der winavr-c-version april2006

von mfd (Gast)


Lesenswert?

Hey leute,
ich wende mich nochmal an euch, weil ich wirklich gerne mit dem WinAVR
GCC programmieren möchte, es aber nicht geht. Das Problem ist noch das
alte. Das Problem sitzt vor dem PC. Die april-version gegen die davor
ausgetauscht .. funzt nicht ... anderen Pc genommen .. funzt nicht ...
der dumme Marius ist voll deprimiert!
Wäre echt nett, wenn ihr mir helfen könntet.
Ich meine, es arbeiten doch verdammt viele mit dem programm und es
läuft ... das kann doch gar kein bug sein oder?
MFG
Marius

von Detlev (Gast)


Lesenswert?

Wie heißt denn dein sourcefile? Endet es auf .c?

von mfd (Gast)


Lesenswert?

:-)
:-)
:-)
Es läuft ... aber fragt mich bloß nicht, was falsch war! :-)
@detlev:
Ja, mein sourcefile endete immer auf .c
Was ich jetzt gemacht habe ist einfach alles runtergeschmissen (zum 4.
mal) und dann eine ältere Version installiert.
Dann einen neun Ordner angelegt (der anders heißt, als der vorherige wo
der Fehler immer aufgetreten ist ... ) über den mfile die makefile
reingespeichert, io.h eingefügt, das programm von Peter im pn2
eingefügt, unter blink.c abgespeichert und es läuft wie am schnürchen!
:-)
Bin sowas von glücklich. das schlimme ist, das ich wirklich nicht weis,
was ich genau falsch gemacht habe. War es die neue version? glaub ich
nicht unbedingt. oder lag es daran, das ich den alten ordner immer
weiter verwendet habe ... (habe aber immer die neuen datein über den
alten gespeichert) oder ob ich einfach nur ständig was falsch
eingetippt habe.
ich habe keine große ahnung... aber es läuft ....
Danke für eure Bemühungen ....
Gruß Marius

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.