Guten Abend,
da ich derzeit vom Betriebssystem von Win auf Linux (Ubuntu) umsteige,
möchte ich natürlich auch meine AVRs unter Linux programmieren. Unter
Win hatte ich AVR-Studio benutzt und bin daher mit den makefiles nicht
ganz vertraut.
Installiert habe ich die CDK Pakete:
cdk-avr-gdb
cdk-avr-base
cdk-avr-sumulavr
cdk-avr-gcc 3.4.5
cdk-avr-lib
cdk-avr-binutils.
Als makefile benutze ich dieses hier:
http://www.mikrocontroller.net/wikifiles/b/b6/Makefile
Zu meinem Problem:
Ich habe die Qulldatei (main.c) und das makefile in einen Ordner
gepackt.
Im Terminal wechsel ich in dieses Verzeichnis und führ den Befehl "make
all" aus. Folgende Meldung erscheint:
1
-------- begin --------
2
avr-gcc (GCC) 4.2.2
3
Copyright (C) 2007 Free Software Foundation, Inc.
4
This is free software; see the source for copying conditions. There is NO
5
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
6
7
make: *** Keine Regel vorhanden, um das Target »main.elf«,
8
benötigt von »elf«, zu erstellen. Schluss.
9
root@meinPC:/home/Ich/AVR-Test_Linux/Testordner#
Zuerst irritiert mich, dass avr-gcc in Version 4.2.2 gestartet wird. In
der Paketverwaltung finde ich nur den cdk-avr-gcc in Version 3.4.5
Des Weiteren kann ich mit der restlichen Fehlermeldung nichts anfangen.
Hat jemand ne Idee?
Falls noch Infos fehlen: Nicht gleich schimpfen - weiß noch nicht,
welche Infos bei Linux relevant sind.
Ich seh' gerade, dass neben dem cdk-avr-gcc
der gcc-avr Compiler in Version 4.2.2 installiert ist.
Hab diesen jetzt deinstalliert. Leider findet er bei der Eingabe von
"make all" im Terminal den cdk-avr-gcc Compiler nicht, sondern bringt
nen Fehler, dass der Compiler fehlt.
Hallo Mark,
dir fehlen im Makefile noch Abhängigkeiten wie z.B.
main.elf : main.o
Im Makefile werden die tools definiert, z.B.
CC = avr-gcc
Am besten lernst du erstmal ein bißchen über Make und paßt das Makefile
an.
Jürgen
Ich versteh nicht, was "CDK" ist. Guck mal, wann die CDK-Serie zuletzt
aktualisiert wurde - vor zwei Jahren! Schmeiß das ganz schnell wieder
runter und bleib bei den normalen avr-gcc-Packeten.
Zum Makefile: Das Makefile aus dem Wiki ist ziemlich überdimensioniert
für den Einstieg. Les dich mal in "make" ein, und zwar NICHT in die
Info+Manpages, die sind zu verwirrend. Versuchs mal da:
books.google.de --> 0-596-00697-7 --> Seite 512ff
Ich hoffe, Google hat keine Seiten ausgelassen.
Wenn der Compiler nicht gefunden wird, liegt das einfach daran, dass er
in einem Verzeichnis liegt, das nicht in der PATH-Environment-Variable
enthalten ist, oder er hat einen anderen Namen als avr-gcc. Also je nach
Bedarf PATH-Variable ergänzen oder CC-Variable im Makefile anpassen (s.
Post von Jürgen).
Das Makefile an sich müsste ok sein. Es ist ein Beispiel aus dem
WinAVR-Paket, das aber auch unter Linux funktionieen müsste. Spezielle
Regeln wie
main.elf: main.o
brauchst du nicht zu definieren, die entsprechenden allgemeingültigen
Musterregeln sind im Makefile bereits enthalten. Für den Anfang genügt
es, die Zeilen
TARGET = ...
und
SRC = ...
mit dem passenden Inhalt zu füllen. Mit dem Lesen einer Make-Anleitung
kannst du noch etwas warten, bis du tiefergreifende Änderungen am
Makefile machen möchtest.
Ein Bisschen älter ist das CDK-Paket tatsächlich ;-) Wo hast du denn die
4.2.2-Version des avr-gcc her? Die erscheint mir sinnvoller.
Ich habe gcc-avr und Konsorten (alles ohne cdk) bei mir mal installiert,
das Makefile so wie heruntergeladen in ein Verzeichnis kopiert und eine
kleine sinnfreie main.c dazugetan.
"make all" hat bei mir keinerlei Fehler produziert.
Installiert habe ich über Synapic (Ubuntu 8.04)
Gruß
Michael
Danke für eure Beiträge.
Habe das CDK-Paket entfernt und den AVR-GCC Compiler 4.2.2 installiert.
Installiert habe ich das über Synaptic-Paketverwaltung (Ubuntu 8.04).
Jetzt will er auch compilieren, bricht aber mit einem Fehler ab:
1
-------- begin --------
2
avr-gcc (GCC) 4.2.2
3
Copyright (C) 2007 Free Software Foundation, Inc.
4
This is free software; see the source for copying conditions. There is NO
5
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
/usr/lib/gcc/avr/4.2.2/../../../../avr/bin/ld: crtm32.o: No such file: No such file or directory
11
make: *** [main.elf] Fehler 1
Gehe ich richtig in der Annahme, dass im Pfadname die /../ so viel
bedeuten, wie eine Ebene nach oben? Dann müsste es nämlich stimmen.
In /usr/avr/bin liegt die Datei "ld".
Ansonsten weiß ich nicht, wie oder besser wo ich den Pfadnamen verändern
kann.
Hat hier jemand nen Tipp für mich?
Gruß Mark
Eine eigene Frage?
Dieser Thread ist über 18 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.