Forum: Mikrocontroller und Digitale Elektronik AVR-GCC und makefile unter Linux


von Mark (Gast)


Lesenswert?

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.

von Mark (Gast)


Lesenswert?

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.

von Jürgen (Gast)


Lesenswert?

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

von Sven P. (Gast)


Lesenswert?

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.

von yalu (Gast)


Lesenswert?

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.

von Michael H. (Gast)


Lesenswert?

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

von Mark (Gast)


Lesenswert?

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.
6
7
8
Linking: main.elf
9
avr-gcc -mmcu=atmega32 -I. -gdwarf-2   -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.o  -std=gnu99 -DF_OSC=3686400 -MD -MP -MF .dep/main.elf.d main.o   --output main.elf -Wl,-Map=main.map,--cref    -lm
10
/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

von Mark (Gast)


Lesenswert?

Entschuldigung - jetzt funktioniert es.
Gab ein kleines Problem mit der installierten AVR-Lib.

Danke für eure Hilfe!!

von Manuel S. (thymythos) Benutzerseite


Lesenswert?

Wenn du ähnlich komfortabel wie mit AVRStudio programmieren willst 
empfehle ich 
http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin

von Mark (Gast)


Lesenswert?

Danke, ich werd mich mal informieren.

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.