www.mikrocontroller.net

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


Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
-------- begin --------
avr-gcc (GCC) 4.2.2
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

make: *** Keine Regel vorhanden, um das Target »main.elf«, 
  benötigt von »elf«, zu erstellen.  Schluss.
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.

Autor: Mark (Gast)
Datum:

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

Autor: Jürgen (Gast)
Datum:

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

Autor: Sven P. (haku) Benutzerseite
Datum:

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

Autor: yalu (Gast)
Datum:

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

Autor: Michael H. (Gast)
Datum:

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

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
-------- begin --------
avr-gcc (GCC) 4.2.2
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


Linking: main.elf
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
/usr/lib/gcc/avr/4.2.2/../../../../avr/bin/ld: crtm32.o: No such file: No such file or directory
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

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Entschuldigung - jetzt funktioniert es.
Gab ein kleines Problem mit der installierten AVR-Lib.

Danke für eure Hilfe!!

Autor: Manuel Stahl (thymythos) Benutzerseite
Datum:

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

Autor: Mark (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, ich werd mich mal informieren.

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.