Guten Abend! Seit heute Abend habe ich ein Problem: Ich benutze zum Erstellen der .bin-Datei für den STM32F411 den GCC für ARM unter Linux Mint (18 Sarah). Ich compiliere den C-Code in einem Terminalfenster mit "make". Es passiert nun folgendes: Wenn ich den Code mit "make" in dem geöffneten Terminalfenster compiliere, wird der Vorgang wie gewohnt ausgeführt. Soweit, so gut. Wird der Code aber geändert und nochmals abgespeichert und man wiederholt den Compiliervorgang, finden sich die Änderungen NICHT in der ausführbaren Datei, die ich dann auf den uC hochlade. Erst wenn ich im Terminal den Menüpunkt "Terminal -> Zurücksetzen und leeren" aufgerufen habe, wird der aktualisierte Quellcode korrekt verarbeitet. Das war vorher anders. Man konnte "make" einfach starten und der geänderte Code wurde geladen und compiliert, Der aktualisierte Quellcode findet sich übrigens mit dem korrekten Zeitstempel im korrekten Verzeichnis auf dem Datenträger. Daran kann es also nicht liegen. Hat jemand einen Hinweis, was mit dem Terminal jetzt anders ist als vorher? Danke! Peter
Peter R. schrieb: > Menüpunkt "Terminal -> Zurücksetzen und leeren" aufgerufen > habe, Das hat mit dem ›make‹ Vorgang nicht das Geringste zu tun. Du wirst irgend einem anderen Fehler aufgesessen sein.
Und genau aus diesem Grund habe ich gefragt: "Hat jemand einen Hinweis, was mit dem Terminal jetzt anders ist als vorher?" P.
Das naheliegendste wäre ein Fehler im geänderten Quellcode.
Peter R. schrieb: > Und genau aus diesem Grund habe ich gefragt Die Aussage: > Das hat mit dem ›make‹ Vorgang nicht das Geringste zu tun. impliziert das es nicht das Geringste mit dem ›make‹ Vorgang zu tun hat. Darum ist die erneute Frage nicht sonderlich zielführend, denn: Es hat mit dem ›make‹ Vorgang nicht das Geringste zu tun.
make mit -d ausführen, Ausgabe in eine Datei umlenken. Datei sorgfältig studieren (ist elendig viel) um zu sehen was make wirklich treibt. Dann das ganze nach dem Terminal-Reset noch mal und die beiden Ausgaben vergleichen.
Nochmal: Es liegt nicht am Code, der ist korrekt und liegt am korrekten Ort mit korrektem Zeitstempel. Wenn der Code fehlerhaft wäre, würde ich eine Fehlermeldung beim Kompilieren erhalten. Aber was soll's? Ich habe mir ein kleines Skript geschrieben, das dem Terminal den Befehl "reset" übergibt gefolgt von "make all". Funzt einwandfrei und gut is' P.
Peter R. schrieb: > Wird der Code aber geändert und nochmals abgespeichert und man > wiederholt den Compiliervorgang, finden sich die Änderungen NICHT in der > ausführbaren Datei, die ich dann auf den uC hochlade. Wird denn da was compiliert oder nicht? Hast du mal geprüft, ob das erzeugte File sich dadurch ändert? Vielleicht liegt das Problem nicht beim Compilieren, sondern beim Flashen. Peter R. schrieb: > Ich habe mir ein kleines Skript geschrieben, das dem Terminal den Befehl > "reset" übergibt gefolgt von "make all". Funzt einwandfrei und gut is' Das ist sehr verwunderlich, denn reset wirkt sich eigentlich nur auf das Terminal aus und hat überhaupt nichts mit make oder dem Filesystem zu tun.
eventuell hat das make ja eine shell mit irgendeinem Kommando, z.B. flashen, gestartet und hängt. Da würde vielleicht ein ctrl-C helfen. Ein Screenshot hätte auch weitergeholfen, aber das scheint ja geheim zu sein.
J. S. schrieb: > Ein > Screenshot hätte auch weitergeholfen, und das makefile noch viel mehr. 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.