makefile error: no rule to make ...

Gast #262942
Lesenswert?
• ▲
▼
Hallo,
ich wollte mein erstes kleines programm schreiben, hab mir das tutorial
durchgelesen und das makefile mittels mfile konfiguriert.
beim ausführen von make all aus dem winavr - programers npad tritt dann
der fehler

-------- begin --------
avr-gcc (GCC) 3.4.3
Copyright (C) 2004 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.exe: *** No rule to make target `main.o', needed by `main.elf'.
Stop.

> Process Exit Code: 2

nach einiger suche hab ich dann den eintrag:
# Compile: create object files from C source files.
%.o : %.c

das file sollte also angelegt werden. sollte!
auch das suchen nach dem file brachte kein ergebnis.
für ratschläge wäre ich dankbar
Angehängte Dateien:
Gast #262944
Lesenswert?
• ▲
▼
Hallo.

Das nervige make ist ganz schön kompliziert. Also sehe ich mich um und
finde scons (www.scons.org). Dieses ist unter Python geschrieben.
Python stellt unter Linux normalerweise kein Problem dar, gehört zum
Standard. Damit verkürzt sich das "Makefile" auf:

--- SConstruct -----------------------------------------------------
src_files = Split('main.c fkt1.c')
prg_file = 'prog'

env = Environment(CC='/usr/local/avr/bin/avr-gcc',
                  CCFLAGS='-mmcu=atmega8 -Os -g3')
env.Program(prg_file, src_files)
--------------------------------------------------------------------

Unschön hieran ist, dass avr-gcc mit dem kompletten Pfad angegeben
werden muss. Dies ist meine erste Version mit scons und falls jemand
Lösungsvorschläge/Verbesserungen hat, immer her damit.

Gruß
Marco
-
#262945
Lesenswert?
• ▲
▼
Ich bin auch Linux-Freak und habe das OS aus Redmond nie privat
benutzt.

mrdaniel82 hat WinAVR und unter Windows ist Python ein ziemliches
Problem.

@mrdaniel82

Das mit dem make ist eigentlich ganz einfach, wenn Du mfile benutzt.
Wenn Du nur eine Datei im Sourcecode hast, dann nenne sie main.c
Das Makefile, das aus dem PN2 aufgerufen wird und das Du mit mfile
erzeugst, nimmt automatisch an, das der Sorucecode mit dem main()
Funktionsaufruf in der Datei main.c steht.

Sollte Deine Datei, die die main() Funktion enthält, aber
meinprogramm.c heißen, dann musst Du in mfile bei "Main File" den
Namen meinprogramm eintragen.

Wenn Du dann z.B. die LCD-Sachen noch in Deinem Programm brauchst, dann
musst Du die in "Source Files" noch eintragen. (main nicht mehr, das
ist automatisch in der Liste drin.)

Ich hoffe, das hilft Dir ein wenig weiter.

Antwort schreiben

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.

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.