www.mikrocontroller.net

Forum: Compiler & IDEs Probleme mit gcc -MM im Makefile


Autor: Andreas Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

Ich habe hier ein komisches Phänomen das ich mir nicht erklären kann. In 
meinem Makefile steht folgende Zeile:


dep: $(COMMON_SRCS) $(SAM7_SRCS)
    $(CC) $(INC_FLAGS) -MM $^ > $@


Diese liefert mir auf der Eclipse-Console folgenden Output:


make ROOT_DIR=C:/RoboCar/testWorkspace/RoboCar dep
arm-elf-gcc -I. -I../common/include  -MM ../common/croutine.c 
../common/list.c ../common/queue.c ../common/tasks.c 
../common/portable/heap_1.c port.c portISR.c startup.c syscalls.c > dep
arm-elf-gcc.exe: no input files
make: *** [dep] Error 1


Wenn ich nun die Zeile in einem DOS Prompt ausführe:

arm-elf-gcc -I. -I../common/include  -MM ../common/croutine.c 
../common/list.c ../common/queue.c ../common/tasks.c 
../common/portable/heap_1.c port.c portISR.c startup.c syscalls.c > dep


bekomme ich in der Datei dep das richtige Ergebnis.


Dachte erst, es liegt an dem Umleitungsoperator, denn wenn ich die 
Umleitung weg lasse, so bekomme ich die Depencies in der Eclipse Console 
angezeigt. Aber der Aufruf

echo "Testoutput" > test.txt


im Makefile funktioniert. Nur der gcc Aufruf macht Probleme?


Übersehe ich etwas?
Ich bin für jeden Tip sehr dankbar!!!

Gruß
Andy

Autor: ... (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sieht so aus, als ob Du im falschen Verzeichnis bist.

Autor: Andreas Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das glaube ich nicht. Ich habe gerade versucht, den Make-Aufruf über das 
DOS Prompt aus dem richtigen Verzeichnis aus aufzurufen. Gleiches 
ergebnis. Und wie gesagt, wenn ich den gcc Befehl direkt ausführe, dann 
funktioniert alles nur im Makefile nicht.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schmidt schrieb:
> Das glaube ich nicht.

Das glaube ich doch. Das Makefile wechselt in ein anderes Verzeichnis, 
wahrscheinlich hat es mit der übergebenen ROOT_DIR Variable zu tun die 
auf C:/RoboCar/testWorkspace/RoboCar gesetzt wird.

Ändere einmal das Makefile auf

dep: $(COMMON_SRCS) $(SAM7_SRCS)
    dir
    $(CC) $(INC_FLAGS) -MM $^ > $@

dann wird das Verzeichnis gelistet und Du siehst wo du bist.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann müsste der Compiler aber was erzählen von "File not found" oder
so, und nicht "No input files".

Klingt irgendwie danach, als würde make bei der Übergabe der
Kommandoparameter irgendwo die Zeile abschneiden.  Ist es sicher,
dass das richtige make aufgerufen wird?

Autor: Andreas Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das hatte ich auch schon probiert. Aber ich bekomme dann die 
Fehlermeldung, dass der Prozess dir nicht gefunden wurde.

Was mich aber verwundert ist, dass wenn ich die Umleitung in eine Datei 
des Aufrufs $(CC) -MM weglasse, dass dann der Aufruf korrekt ausgeführt 
wird und die Depencies auf der Konsole angezeigt werden.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das deutet eben alles auf eine Macke der Shell (Kommandoprozessor) hin,
die da aufgerufen wird, um das Kommando auszuführen.

Autor: Andreas Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg: Ich habe nur ein make installiert welches auch im Path ist. In 
dem Test-Projekt gibt es im gesamten Verzeichnisbaum nur ein Makefile.

Wenn ich die Konsolen-Ausgabe von dem Make Aufruf anschaue, dann wird 
(zumindest bei der Anzeige auf der Konsole) nichts abgeschnitten.

Ich habe so die Vermutung, dass es irgendetwas mit der Umleitung > $@ zu 
tun haben muss.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Andreas Schmidt schrieb:
> Wenn ich die Konsolen-Ausgabe von dem Make Aufruf anschaue, dann wird
> (zumindest bei der Anzeige auf der Konsole) nichts abgeschnitten.

Ja, aber die gibt ja das make selbst noch aus.  Offenbar kommt es
aber in dieser Form nicht mehr beim GCC an.

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.