Forum: Compiler & IDEs Immernoch blutiger Anfänger


von Markus (Gast)


Lesenswert?

Moin zusammen,

also erstmal vielen Dank für die Antworten. Ich habe jetzt mal alles 
ausgepackt und habe nun einen Ordner c:\winavr. Darin befinden sich 
weitere Ordner (avr,bin,doc,info,lib,man,pn,sample & utils). Außerdem 
habe ich mir dieses Zip mit Beispielen installiert. Der Ordner heißt 
gcctest und enthält die Unterordner gcctest1 bis gcctest9. In jedem 
Beispielordner liegt nun eine C-Datei und eine makefile-Datei. Nun 
stellt sich die Frage, mit welchem Programm man das makefile ausführen 
muß. Ist das make.exe in utils? Das funktioniert irgendwie nicht. 
Irgendwas mit den Umgebungsvariablen falsch? Ich habe definiert:
AVR=c:/winavr
CC=avr-gcc
PATH=...;c:\winavr\bin

Help me !

Markus

von Markus (Gast)


Lesenswert?

Also ich habe jetzt hier nochmal etwas mit den Umgebungsvariablen 
rumgespielt, so daß er jetzt auch immer die make.exe in utils\bin 
findet. Und wenn ich jetzt "make makefile" eingebe, kommt immer die 
meldung "make: Nothing to be done for `makefile'."! Irgendetwas stimmt 
da nicht, oder mache ich etwas grunsätzlich falsch?

Markus

von Peter D. (peda)


Angehängte Dateien:

Lesenswert?

Hallo Markus,

ich kann Dir nachfühlen. Ich habe mich mühsam durch das make gewühlt und 
dann alles in eine Batch geschrieben (siehe Anhang).

Diese Batch muß man editieren, wenn man einen anderen AVR verwenden 
will. Es gibt leider noch keine Möglichkeit, daß durch ein #pragma oder 
#include zu definieren.

Aufrufen must Du es mit AVRC.BAT Name
Falls Du mehrere Files hast, must Du sie mit #include in ein File mit 
einbinden. Erzeugt werden Name.s, Name.lst und Name.hex.

Im Name.s ist der erzeugte Assembler, allerdings sind alle 
I/O-Register-Namen durch ihre Adressen ersetzt.

Im Name.lst sind dann auch noch alle Variablen-Namen weg.


Das mit dem Unterverzeichnis für die #inlcude, habe ich nicht 
verstanden, was das soll. Deshalb habe ich alles aus AVR nach .. kopiert 
und dann darin alles "AVR/" gelöscht.
Dann gehen die includes wieder wie gewohnt ohne extra Pfad.


Peter

von Joerg Wunsch (Gast)


Lesenswert?

Markus, Du warst schon nahe dran, hast es nur zu kompliziert
aufgefaßt. ;-)

Nicht »make Makefile«, sondern einfach nur »make«.  Das Makefile
wird dabe von make (alias make.exe bei Dir) benutzt um zu
erfahren, was es jetzt eigentlich machen soll.

Genaugenommen führt ein einfacher Aufruf von »make« das
sogenannte default target aus.  Das ist der erste Eintrag im
Makefile, der mit einem Doppelpunkt abgeschlossen wird; meist
heißt es »all«.  Alles andere, was ebenfalls vorn beginnt und
mit einem Doppelpunkt endet, sind auch sogenannte targets, also
Dinge, die man mit »make ...« bauen kann.  In der Regel enthalten
die Makefiles z. B. ein clean, so daß man mit »make clean« alle
temporär erzeugten Dateien wegräumen lassen kann.  Normalerweise
korrespondiert ein solches target mit dem Namen einer
anzulegenden Datei, d. h. Du kannst auch mit »make test.o«
aus einer (vorhandenen) Datei test.c die Objektdatei test.o
bauen lassen.  Dinge wie »all« oder »clean« haben dabei eine
Sonderfunktion, sie werden auch ``phony targets'' genannt
(phony = unecht), weil sie nicht wirklich an einen Dateinamen
gebunden sind sondern nur existieren, damit man eben so hübsch
»make clean« sagen kann.

von BAB (Kai K.) (Gast)


Lesenswert?

...desweiteren muss mit winavr nichts entpackt werden...winavr 
installiert sich selber...
es werden mit der neuen version auch alle umgebungsvariablen automatisch 
gesetzt. man kann also sofort starten.

um ein C-Programm mit dem makefile von Eric kompilieren zu können muss 
"make all" eingegeben werden!!

make alleine reicht mit diesem file nicht aus!

Gruss,
BAB

von Joerg Wunsch (Gast)


Lesenswert?

> um ein C-Programm mit dem makefile von Eric kompilieren zu
> können muss "make all" eingegeben werden!

Wirklich?  Das ist schade.  Das letzte Makefile, das er mir
zum Review gegeben hat, hat aber "all:" als default target
drin stehen.  Hat er das nochmal geändert?

von BAB (Kai K.) (Gast)


Lesenswert?

ne..hast recht...ich hab da makefile noch auf meine bedürfnisse 
umgeschrieben und hab nen bug eingebaut...
es reicht also doch "make" mit erics version...sorry mein bug..

Gruss,
BAB

von Markus (Gast)


Lesenswert?

Hallo Leute,

schon mal vielen Dank für die Hinweise. Ich habe jetzt schon mal ein 
kleines Test-Programm compilieren können. Aber ich bräuchte mal eine 
Liste, wo die ganzen Compiler-Optionen beschrieben sind. In den 
Doc-Files bin ich noch nicht fündig geworden.

Markus

von BAB (Kai K.) (Gast)


Lesenswert?

schau mal in c:\winavr\doc\gnu\make.html

von Joerg Wunsch (Gast)


Lesenswert?

Das ist allerdings die Doku vom "make".

Die (für AVR) wesentlichen Compiler-Optionen sind eigentlich
auch in der avr-libc Dokumentation enthalten (Abschnitt
»Using the GNU Tools«).

Ansonsten sollte das gcc-Manual natürlich auch mit dabei sein,
aber vermutlich dürfte dessen Studium recht lang dauern, da
der gcc selbst ja auf einer Vielzahl von Maschinen und Systemen
läuft.

von BAB (Kai K.) (Gast)


Lesenswert?

yo schon richtig...aber für compilereinstellungen ist er mit dem 
makefile gut bedient...war zumindest meine einstiegserfahrung..der rest 
kommt nach und nach wenn mans wirklich braucht...


Gruss,
BAB

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.