www.mikrocontroller.net

Forum: Compiler & IDEs gcc plug-in: Error: Object file not found on expected locati


Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn ich eine selbstgeschriebene .h Datei mit einbinde
(#include sseg.h) dann bekomme ich fogenden Fehler:

gcc plug-in: Error: Object file not found on expected location [..].elf

Wenn ich das include raus nehme, bekomme ich nur noch Warning: implicit 
declaration of function x (is ja klar).

Das Programm läuft zwar aber eigentlich würde ich die Warning gerne 
nicht haben. ->also includen

Diese Angaben reichen wahrscheinlich noch nicht aus um mir zu Helfen ich 
kann mir jetzt allerdings gar nicht vorstellen was ihr noch so brauchen 
würdet, würde mich also freuen wenn jetzt ne antwort kommt ;)

oder ihr erstmal sagt wir brauchen dafür 1. 2. 3.

Ich hab das Problem übrigens öfters (nicht nur mit der sseg.h)

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> #include sseg.h

Da fehlen doppelte Anführungsstriche " oder spitze Klammern <> um das 
sseg.h. So wird die Includedatei nicht gefunden und deshalb auch keine 
Objektdatei produziert. Das kann zur beschriebenen Fehlermeldung führen.

Eigentlich sollte aber schon vorher eine Fehlermeldung auftauchen, in 
der der Fehler beim Includieren gemeldet wird.

Ansonsten...
Beitrag "gcc plug-in: Error: Object file not found on expected ...."
Beitrag "gcc plug-in: Error: Object file not found on expected locati"
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja ich habs auch mit "" stehen,
also #include "sseg.h"

Hab ich hier nicht richtig gepostet duck

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

Bewertung
0 lesenswert
nicht lesenswert
Guck dir trotzdem mal die Fehlermeldungen an.  AVR Studio wertet den
Rückkehrcode vom "make" nicht ordentlich aus, sondern versucht
stattdessen, alle Fehlermeldungen zu parsen.  Damit findet es natürlich
nur ,,erwartete'' Fehler, bei unerwarteten stolpert es erst dann, wenn
doch seiner Meinung nach der Build-Prozess gut gelaufen ist, am Ende
aber dann gar keine Objektdatei rausgekommen ist.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo, so ein Fall is es bei mir.

Ok ich habe herausgefunden woran es liegt..

Ich definiere bzw. deklariere in der sseg.h einige konstanten (const 
uint8_t) und eine globale Variable..

Damit kommt er wohl nicht zurecht..:
multiple definition of sseg_charset

Darf man in der .h so was gar nicht machen?
Muss ich das in der .c machen? oder gibts da noch andere Orte?

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich wollte noch hinzufügen, dass ich die sseg.h mit
#ifndef sseg_h
#define sseg_h
beginne und mit #endif schließe

in so fern wundert es mich das er versucht das ganze mutliple zu 
definieren, darf/ kann er doch eigentlich nur einmal oder wieso nicht??

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also im Prinzip das gleiche Grundproblem wie im Link #2 oben
Beitrag "gcc plug-in: Error: Object file not found on expected locati"

Steht bei der Fehlermeldung "multiple definition of sseg_charset" keine 
Zeilennummer oder Name einer Quelldatei dabei? Einen besseren 
Schussinsblaue kann ich auch nicht abgeben - es fehlt halt der 
Quellcode.

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

Bewertung
0 lesenswert
nicht lesenswert
Du darfst in Headerdateien nur deklarieren, nicht aber definieren.
(*)  Also das hier ist OK:
extern uint8_t someglobalvar;
extern uint8_t dosomething(void);
uint8_t dosomethingelse(void);

Bei Funktionen ist das "extern" optional in der Deklaration, der
Compiler kann an Hand des abschließenden Semikolons stets eine
Deklaration von einer Definition unterscheiden.

Das hier ist falsch, da es sich um eine Definition handelt:
uint8_t someglobalvar;

(*) Keine Regel ohne Ausnahme: Eine Funktionsdefinition mit "static
inline" ist auch im Headerfile OK.  Eine solche Funktion hat als nur
Sinn, wenn sie vor der ersten Benutzung nicht nur deklariert, sondern
auch definiert worden ist, da der Compiler ja explizit angewiesen
wird, den zugehörigen Assemblercode an Ort und Stelle sofort zu
generieren.

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe ein spezielles extern probelem:

main.c:  volatile char buffer[BUFFER_SIZE];

uart.c:  extern volatile char buffer[BUFFER_SIZE];

Fehler: gcc plug-in: Error: Object file not found on expected locati

Warum? Evtl. weil das #define für BUFFER_SIZE in einer main.h ist? Diese 
includiere ich doch in beiden .c-Modulen.

Ich weiß keinen Rat mehr! Danke für Hilfe!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P schrieb:

> Warum? Evtl. weil das #define für BUFFER_SIZE in einer main.h ist? Diese
> includiere ich doch in beiden .c-Modulen.

Schön für dich.
Aber denk immer drann: Wir können deinen Code nicht sehen

> Ich weiß keinen Rat mehr! Danke für Hilfe!

Für dich gilt dasselbe:
Geh ins Output Fenster (dort wo die Compiler Statusmeldungen 
durchlaufen) und scroll nach oben, ob es einen Fehler vom 
Compiler/Linker gab.

Autor: Timo P (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein, lezte meldung war:

Loaded partfile: C:\Programme\Atmel\AVR 
Tools\PartDescriptionFiles\ATmega16.xml

danach der Fehler!

Wenn ich die Codes wieder in ein einziges modul packe, läuft alles 
wieder. GRRR

ich denke das einfachste ist wohl, wenn ich kein define für die 
buffer-size nutze, sondern es statisch angebe. wohlgemerkt an zwei 
stellen...:(

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo P schrieb:
> nein, lezte meldung war:
>
> Loaded partfile: C:\Programme\Atmel\AVR
> Tools\PartDescriptionFiles\ATmega16.xml
>
> danach der Fehler!

Das kann nicht sein.
Da fehlt mindestens der Compileraufruf, da fehlt mindestens die 
Compiler-Fertig Meldung, da fehlt ....

> ich denke das einfachste ist wohl, wenn ich kein define für die
> buffer-size nutze, sondern es statisch angebe. wohlgemerkt an zwei
> stellen...:(

Kannst du natürlich machen.
Du kannst aber auch den Code einfach mal herzeigen.

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

Bewertung
0 lesenswert
nicht lesenswert
Timo P schrieb:

> Fehler: gcc plug-in: Error: Object file not found on expected locati

Update dein AVR Studio bitte auf eine halbwegs aktuelle Version, die
den exit-Status von "make" ordentlich auswertet, statt sich auf das
Parsen von Textmustern für Fehlermeldungen zu verlassen.

Bitte kapere keine alten Threads für dich.

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.