Forum: Compiler & IDEs Probleme mit Make unter Eclipse-CDT mit Yagarto


von Lukas R. (mikrobroesl)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin grade ziemlich am Verzweifeln, denn ich versuche nun schon seit 
fast zwei Tagen, per Eclipse-CDT mit Yagarto etwas auf meinem MB9bF506R 
(CortexM3) debuggen zu können.
Ich habe mehrmals versucht, genau nach den Anweisungen von 
www.yagarto.de/howto/ alles einzurichten.
Im Grunde alles okay, nur sobald ich in Eclipse das Beispiel-Projekt 
"builden" möchte, kommt immer wieder der gleiche nervige Fehler:

"make *** multiple target patterns. Stop"

Ich hab viel gegoogelt, und scheinbar kommt das vor, falls im Make-File 
bei Pfadangaben entweder Leerzeichen enthalten sind, oder 
Doppelpunkte...aber so wie ich das sehe, trifft nichts davon bei mir zu?
Interessant ist für mich auch noch, dass beim ersten Build, alles 
wunderbar funktioniert. Ab dem zweiten Build-Versuch kommt dann die 
genannte Fehlermeldung :-/
Ich häng mal das Make-File an...es stammt nicht von mir, sondern von 
einem frei zugänglichen Beispiel auf der Yagarto-Site.

Habt ihr einen Rat?

Gruß

von Lukas R. (mikrobroesl)


Lesenswert?

Und wenn ich auf die Fehlermeldung doppelklicke, dann führt es mich in's 
File "main.o.d" mit folgendem Inhalt:

src/main.o: src/main.c \
 c:\yagarto\bin\../lib/gcc/arm-none-eabi/4.7.2/include/stdint.h \
 c:/yagarto/lib/gcc/../../arm-none-eabi/sys-include/stdint.h

c:\yagarto\bin\../lib/gcc/arm-none-eabi/4.7.2/include/stdint.h:

c:/yagarto/lib/gcc/../../arm-none-eabi/sys-include/stdint.h:


...und da soll laut Fehlermeldung der Wurm drin sein, da er mich auf 
Zeile 1 verweist. Hmmm?

von Michael F. (mifi)


Lesenswert?

Hallo Lukas,

mach doch bitte mal eine DOS-Box auf und versuche dort das Projekt
zu bauen. Was passiert wenn Du "make --version" eingibst?

Wie sieht das komplette Projekt aus, kannst Du das bitte hier
mal anhängen?

Gruß,
Michael

von Lukas Riezler (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Michael - einen passenderen Ansprechpartner kann ich wohl nicht 
erwischen :-)

Wenn ich das ganze in der DOS-Box machen möchte, passiert das Gleiche.
Dürfte dann also nichts mit Eclipse zu tun haben, oder?
Nochmal zur Zusammenfassung:
- "make clean" geht
- "make all" geht
- ab jetzt geht kein "make clean" oder "make all" mehr (oben genannte 
Fehlermeldung tritt auf). Erst wenn ich in meinem Ordner den 
".dep"-Ordner von Hand lösche, dann kann ich in der Konsole ganz normal 
wieder "make clean" und anschließend "make all" ausführen lassen.

make --version liefert mir das, was sich im Anhang befindet.

Vielen Dank für die Hilfe :-)

Gruß,
Lukas

von Maximilian (Gast)


Lesenswert?

Lukas R. schrieb:
> Und wenn ich auf die Fehlermeldung doppelklicke, dann führt es mich in's
> File "main.o.d" mit folgendem Inhalt:

Lad die mal hoch, daß man sie original sieht, mit dem echten Whitespace 
etc.

von Maximilian (Gast)


Lesenswert?

Maximilian schrieb:
> Lukas R. schrieb:
>> Und wenn ich auf die Fehlermeldung doppelklicke, dann führt es mich in's
>> File "main.o.d" mit folgendem Inhalt:
>
> Lad die mal hoch, daß man sie original sieht, mit dem echten Whitespace
> etc.

Ah, hast du ja.

Die ist aber auch übel vermurkst. Da sehe ich Spaces statt Tabs, kann 
das sein?

Wenns die .d ist, dann ist auch klar, warum es beim ersten Mal geht...

von Michael F. (mifi)


Lesenswert?

Hallo Lukas,

das ist alles etwas merkwürdig. Dein Projekt läuft hier
ohne Probleme. Ich habe aber auch eine Make Version 3.81.

Ich gehe mal davon aus des es nicht direkt am Make liegt
sondern an den andern Tools. Hast Du mal die YAGARTO-Tools benutzt?
Wenn Du diese installiert hast, sollte Make eigentlich die
Version 3.81 haben. Schau mal in diese Richtung.

Evt. hat es damit was zu tun das in dem Makefile "sh" benutzt wird
und das "sh" bei Dir nicht vorhanden ist. Ist aber bei den YAGARTO-Tools
dabei.

Gruß,
Michael

von hp-freund (Gast)


Lesenswert?

Die "multiple target patterns" sind die c: in den .o.d Dateien.

Er versucht wie im Makefile ein: make c
auszuführen und das mehrfach.
Stell dein System auf relative Pfade ein, dann verschwinden die.

von Michael F. (mifi)


Lesenswert?

Hallo hp-freund,

>Stell dein System auf relative Pfade ein, dann verschwinden die.
Was meinst Du genau damit? Für Leute die ein Makefile als
notwendiges Übel sehen, können mit der Aussage nicht viel anfangen.

Kannst Du bitte mal an einem Beispiel zeigen was Du genau meinst?

Gruß,
Michael

von hp-freund (Gast)


Lesenswert?

Da ich selbst kein Window$ bzw. yagarto benutze will ich nichts falsches 
sagen.

Die Frage ist woher kommt das c: wenn das make damit nichts anfangen 
kann?
Gibt es auf dem Rechner noch eine andere make.exe?
Dein make --version meldet sich als cygwin?

Bei dem Beispiel bekomme ich unter Linux die gleiche Fehlermeldung.
Wenn ich in den .d Dateien das c: entferne läuft es.

von Michael F. (mifi)


Lesenswert?

Hallo hp-freund.

>Dein make --version meldet sich als cygwin?
Nein, meine Version sieht wie folgt aus:

GNU Make 3.81
Copyright (C) 2006  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.

This program built for i686-pc-mingw32

Gruß,
Michael

von Lukas R. (Gast)


Lesenswert?

Hallo :-)
Ich habe jetzt mal die Yagarto-Tools installiert - es bleibt 
erwartungsgemäß trotzdem bei der make-Version 3.82.90.
Macht das was aus, dass das Make von cygwin stammt? Wenn ich meinen 
Rechner durchsuche, dann sieht's so aus, als ob dies das einzige 
Make.exe ist, das bei mir existiert.

Wegen den Pfadangaben: wie stell ich mein System auf realtive Pfade um?

Viele Grüße,
Lukas

von hp-freund (Gast)


Lesenswert?

Lukas R. schrieb:
> Ich habe jetzt mal die Yagarto-Tools installiert - es bleibt
> erwartungsgemäß trotzdem bei der make-Version 3.82.90.

Das finde ich sehr Merkwürdig. Hab eben zum Test installiert:
1
yagarto-tools-20121018
2
3
GNU Make 3.81
4
Copyright (C) 2006  Free Software Foundation, Inc.
5
This is free software; see the source for copying conditions.
6
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
7
PARTICULAR PURPOSE.
8
9
This program built for i686-pc-mingw32

Hast Du auch die Suchpfade gesetzt/setzen lassen?

von Michael F. (mifi)


Lesenswert?

Hallo Lukas,

>Macht das was aus, dass das Make von cygwin stammt?
Ich vermute mal das das Dein Problem ist. Kannst Du nicht
cygwin bei Dir aus dem Pfad nehmen?

Gruß,
Michael
PS: YAGARTO wird hinten an den Pfad eingetragen.

von Lukas R. (mikrobroesl)


Lesenswert?

Hallo,

du hast Recht! Wenn ich cygwin aus dem Pfad nehme, dann tritt der Fehler 
nicht mehr auf :-)
Es reicht sogar, wenn ich cygwin bei PATH einfach hinter Yagarto setze - 
wusste gar nicht, dass die Reihenfolge hier eine Rolle spielt?!

Vielen lieben Dank für die Hilfe :-)

von Lukas R. (mikrobroesl)


Lesenswert?

hp-freund schrieb:
> Stell dein System auf relative Pfade ein, dann verschwinden die.

Es funktioniert zwar jetzt soweit alles, aber das interessiert mich noch 
- wie stell ich das am Besten an? :)

von hp-freund (Gast)


Lesenswert?

Hab doch kein Window$ und will nicht extra alles installieren um nichts 
falsches zu sagen. Eigentlich ging es nur darum in eclipse die include 
Pfade relativ z.B. zu workspace einzurichten.
Ist ja aber mit dem richtigen make nicht nötig.

von Michael F. (mifi)


Lesenswert?

Hallo zusammen,

meine Beispiele sind relative. Man kann sie beliebig verschieben
und immer noch übersetzen. Dort sind keine absoluten Pfade vorhanden.

Gruß,
Michael

von Oliver S. (oliverso)


Lesenswert?

Michael Fischer schrieb:
>>Stell dein System auf relative Pfade ein, dann verschwinden die.
> Was meinst Du genau damit? Für Leute die ein Makefile als
> notwendiges Übel sehen, können mit der Aussage nicht viel anfangen.

Denk nicht weiter drüber nach. Die .d-Files werden automatisch erstellt, 
ud beinhalten die Anhängigkeiten. Ob da jetzt absolute oder relative 
oder gar keine Pfade drin stehen, braucht einen normalerweise nicht zu 
interessieren. Mit dem passendem make funktioniert das einfach.
Auch unter Windows ;)

Oliver

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.