Forum: Compiler & IDEs ARM GCC Linux Mint: "make" im Terminal lädt alten Quelltext


von Peter R. (dk7ih)


Lesenswert?

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

von Norbert (der_norbert)


Lesenswert?

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.

von Peter R. (dk7ih)


Lesenswert?

Und genau aus diesem Grund habe ich gefragt:

"Hat jemand einen Hinweis, was mit dem Terminal jetzt anders ist als 
vorher?"

P.

von J. S. (jojos)


Lesenswert?

Das naheliegendste wäre ein Fehler im geänderten Quellcode.

von Norbert (der_norbert)


Lesenswert?

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.

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

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.

von Peter R. (dk7ih)


Lesenswert?

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.

von Rolf M. (rmagnus)


Lesenswert?

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.

von J. S. (jojos)


Lesenswert?

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.

von Oliver S. (oliverso)


Lesenswert?

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
Noch kein Account? Hier anmelden.