hallo leute, seit kurzem kommt es immer wieder vor, dass beim einfügen einer .h datei folgender fehler auftritt: # "ld returned 1 exit status # "recipe for target 'i2c.elf' failed ich habe wie immer ein projekt erstellt, in den projektordner das .h file kopiert und dann über "rechte maustaste - add - existing item" eingefügt. woran könnte das liegen? ps: andere projekte, bei denen ich das gleiche gemacht habe, funktionieren. Danke!
Schraubt G. schrieb: > woran könnte das liegen? könnte Folgendes: Deine H-Datei hat einen Fehler der solange dem Parser nicht auffällt bis die entsprechende *.c Datei nach dem Include geparst wird und dann (im Zusammenhang mit dem Fehler in der H-Datei) einen Syntax- Fehler findet. Also die H-Datei mal sorgfältig nach "Problemen" durchforsten.
Der linker parst keine .h-Dateien. Zeig doch mal die ganze Fehlermeldung. Oliver
Einfacher wäre es natürlich wenn der OP die Header Datei mal zeigen würde...
Erwartest Du daß hier alle hellsehen können? Wie wärs wenigstens mal die eigentliche Fehlermeldung zu posten? Ich rate mal: Du hast vergessen die .c Datei(en) die zu dem Header dazu gehört (in der alle Funktionen letztendlich implementiert sind die im Header nur vorab angekündigt werden) mit ins Projekt aufzunehmen. Jetzt willst Du irgendeine dieser Funktionen aufrufen und der Linker kann die eigentliche Implementierung nirgends finden. Bahnhof? Zum Umgang mit Compiler und Linker, zum Verständnis was die wann und womit tun, in welcher Reihenfolge und wie das ales zusammenhängt mit .h und .c Dateien und welche Auswirkungen das hat empfehle ich DRINGEND ein grundlegendes C-Tutorial von vorne bis hinten durchzuackern! Gründlich und erschöpfend! Ein Mindestverständnis der Zusammenhänge ist unabdingbar! Es bringt nur Frust für alle beteiligten (auch die Hilfeleistenden) wenn auf Teufel komm raus der zwölfte Schritt vor dem ersten gemacht werden soll.
:
Bearbeitet durch User
Danke für eure Antworten. Ich dachte, dass die oben erwähnten Fehlermeldungen schon sehr typisch für irgendetwas sein könnten. anbei nun die .c und .h datei inklusive der fehlermeldung. schöne Grüße!
Schraubt G. schrieb: > Ich dachte, dass die oben erwähnten Fehlermeldungen Das ist keine Fehlermeldung, das ist nur eine rote Alarmleuchte! So viel wie "ein Fehler ist aufgetreten", mehr nicht! Man kann gerade noch erkennen daß der Linker es war der gestolpert ist ("ld"), aber nicht warum. Die eigentlichen Fehlermeldungen im originalen Wortlaut mit ausführlicher Begründung und noch viel mehr sind in der Konsole des Buildvorgangs zu finden, das Fenster in dem der viele Text durchrauscht. Das ist das einzige was zählt, das einzige worauf Verlass ist und das einzige das interessiert.
:
Bearbeitet durch User
ich hoffe, ich verstehe dich richtig. meinst du den code im makefile? lg
Schraubt G. schrieb: > ich hoffe, ich verstehe dich richtig. meinst du den code im > makefile? > lg Nein. Das build log. Das was auf der Konsole erscheint. Weiter oben hab ich ein paar Tips gegeben: Einmal meine hellseherische Vermutung zum konkreten Problem und weiterhin den Vorschlag am Anfang anzufangen und nicht mitten drin. Das ist zwar ein zeitaufwendiger Prozess aber er ist absolut notwendig. Als Lektion 1 lernst Du jetzt erstmal wo die Fehlermeldungen rauskommen und wie man die liest. Da steht dann meist klipp und klar drin wo der Fehler zu suchen ist. Betrachte diese Lektion als von mir hiermit angeordnet und führe sie durch!
:
Bearbeitet durch User
warum benutzt du nicht ein template ? Wenn du schon nicht erkennen kannst wo du ein Problem hast...
Wie Tim schon schrieb, fehlt die main-Funktion. Und vermutlich sämtliche anderen Grundlagen der verwendeten Programmiersprache. Such dir ein gutes Buch, und lies dich ein. Oliver
:
Bearbeitet durch User
Bernd K. schrieb: > Ich rate mal: Du hast vergessen die .c Datei(en) die zu dem Header dazu > gehört (in der alle Funktionen letztendlich implementiert sind die im > Header nur vorab angekündigt werden) mit ins Projekt aufzunehmen. Jetzt > willst Du irgendeine dieser Funktionen aufrufen und der Linker kann die > eigentliche Implementierung nirgends finden. Und warum sagt die Kiste dann nicht, dass sie die Implementation von der und der Funktion nicht finden kann? Sch..ß gefrickeltes C
my2ct schrieb: > Bernd K. schrieb: >> Ich rate mal: Du hast vergessen die .c Datei(en) die zu dem Header dazu >> gehört (in der alle Funktionen letztendlich implementiert sind die im >> Header nur vorab angekündigt werden) mit ins Projekt aufzunehmen. Jetzt >> willst Du irgendeine dieser Funktionen aufrufen und der Linker kann die >> eigentliche Implementierung nirgends finden. > > Und warum sagt die Kiste dann nicht, dass sie die Implementation von der > und der Funktion nicht finden kann? > Sch..ß gefrickeltes C Weil das hier nicht das Problem ist... Da in der Header Datei nur Forward-Deklarationen drin sind und in der Implementation keine Abhängigkeiten zwischen den Funktionen existieren, könnte er sie auch weglassen. Auf die Nase fällt er wegen der fehlenden Main trotzdem.
:
Bearbeitet durch User
Danke Leute! es lag wirklich an der fehlenden main. jetzt komme ich endlich weiter (: werde natürlich weiterhin üben, üben, üben. Danke euch allen!
my2ct schrieb: > Und warum sagt die Kiste dann nicht, dass sie die Implementation von der > und der Funktion nicht finden kann? Die Kiste sagt schon klipp und klar was der Fehler ist, nur Du bist anscheinend auch nach über 12 Stunden noch unfähig die Konsole mit den Build-Meldungen direkt vor Deiner Nase zu finden und zu lesen was dort steht. In deinem Fall steht dort klipp und klar schwarz auf weiß daß der linker main nicht finden kann. Du hättest Dir und uns allen den ganzen schwachsinnigen Thread sparen können.
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.