Hallo, ich will eine stoppuhr mit zwei Ultraschallsensoren und einem I2 display bauen. Ich habe auch schon alles programmiert doch es zeigt mir immer diesen Problemcode an:
collect2.exe: error: ld returned 1 exit status
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.
timmi:
Hallo, ich will eine stoppuhr mit zwei Ultraschallsensoren und einem I2 display bauen. Ich habe auch schon alles programmiert doch es zeigt mir immer diesen Problemcode an:
collect2.exe: error: ld returned 1 exit status
exit status 1
Fehler beim Kompilieren für das Board Arduino/Genuino Uno.
Das ist garantiert nicht die ganze Meldung aus dem Statusfenster, sondern nur ein Teil davon.
Bist Du vielleicht noch auf Windows XP oder einem anderen Betriebsystem aus dem Computermuseum?
Zeige die Hardwareschaltung!
Zeige den Code!
Zeige die ganze Meldung!
Hier im Forum sind meines Wissens nach KEINE HELLSEHR anwesend, die aktiv Fragen beantworten.
Dieses Problem taucht immer wieder mal auf, ich hatte auch schon mal zu tun damit.
Es kommt bei Arduino-IDE ab etwa 1.6 manchmal zu diesem Problem und es hat offensichtlich mit dem Linker von gcc zu tun.
Es gibt mehrere Lösungsansätze die teilweise etwas „esotherisch“ anmuten.
So wird empfohlen (3 bis 4) zusätzliche „Leervariable“ zu Beginn des Sketches einzufügen, etwa in der Art:
int caspar = 1;
int melchior = 2;
int balthasar = 3;
Und in der Tat – das funktioniert manchmal tatsächlich…
Ein anderer Lösungsansatz geht davon aus, dass die Probleme mit der Länge des Pfades für temporäre Dateien zu tun haben.
Während des Build-Prozesses werden verschiedene Unterornder angelegt.
Je nach Betriebssystem liegen diese an unterschiedlichen Stellen.
Man kann versuchen die Länge des Pfades zu kürzen indem man den "Temp-Ordner" näher an das Root-Verzeichnis bringt.
Manchmal wird auch berichtet, dass es mit dem Usernamen zu tun hat. Wenn dieser Leer- oder Sonderzeichen enthält gibt es tendenziell mehr Probleme.
"Kochbuchlösung" habe ich leider keine.
Falls ich so eine Fehlermeldung bekomme, dann fluche ich zumeist ausgiebig.
Den Linker beeindruckt das zwar eher nicht, aber ich fühle mich dann ein wenig erleichtert
Lösungsansätze die teilweise etwas esoterisch anmuten
Lösungen die nur manchmal funktionieren, überzeugen mich erst, wenn der Erfinder der Lösung beweisen kann, dass, warum und wie die aktuelle Mondphase (oder was sonst) eine Rolle spielt. Ansonsten vermute ich eher, dass dem Problem eine andere Ursache zugrunde liegt.
Wenn eine "unbenutzte" globale Variable einen Effekt hat, ist ganz eindeutig ein Fehler an anderer Stelle in deinem Sketch vorhanden.
Wenn tatsächlich vor "error: ld returned 1 exit status" keine einzige andere Fehlermeldung zu sehen ist, kann man "Ausführliche Ausgaben beim Übersetzen" in den Voreinstellungen anwählen.
Wenn der Blink-Sketch sich übersetzen lässt, deiner mit I2C-Display und zwei Ultraschallsensoren aber nicht, dann hast du erstmal die Möglichkeit, einen Sketch ohne das Display und einen zweiten Sketch ohne Ultraschall-Sensoren zu machen.
Dabei gibt es vier Möglichkeiten:
Beide lassen sich übersetzen,
beide haben Fehlermeldungen (unterschiedliche?),
der I2C Sketch zeigt den Fehler,
der Ultraschall-Sketch zeigt den Fehler.
Wie es weitergeht, hängt dann davon ab.