mikrocontroller.net

Forum: Compiler & IDEs Immernoch blutiger Anfänger


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BAB (Kai K.) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: BAB (Kai K.) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: BAB (Kai K.) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
schau mal in c:\winavr\doc\gnu\make.html

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: BAB (Kai K.) (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.