AVR-GCC und makefile unter Linux

Gast #1020232
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.
Gast #1020238
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.
Gast #1020483
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
Gast #1020487
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.
Gast #1020501
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.
Gast #1020692
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
Gast #1021445
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

Antwort schreiben

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.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.