mikrocontroller.net

Forum: Compiler & IDEs GCC MAKE - Linker: Kann Library nicht finden


Autor: USBLIB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich drehe mich seit paar Tagen im Kreis bei folgenden Problem,
vielleicht hat jemand eine Idee dazu.

Ich kann ein (GCC für ARM) Project auf meinenm Desktop erfolgreich
kompilieren, dass eine USB Library benutzt.

Damit ich unterwegs das Project warten kann, möchte ich es auch auf
meinem Notebook erzeugen können. Das geht jedoch schief, weil die
USB Library nicht gefunden wird.

Die Filestructure beider PCs ist an dieser Stelle gleich, die
Inhalte der Folder sind gleich, das Make File ist gleich, die
GCC Version ist gleich. Trotzdem wird die Library nicht
gefunden.

Die Fehlermeldung ist : cannot find -lusbstack

Auszug aus dem make file:

LIBPATH1 =  ...
LIBPATH2 =  ...
LIBPATH3 = -LC:/xyz/abcd
...
LIBS -lm -lusbstack -lc -lgcc
...
$(LD) $(LIBPATH1) $(LIBPATH2) $(LIBPATH3) $(FLAGS) -o $@ $^ $(LIBS)

Wie gesagt, usbstack.a existiert im richtigen Verzeichnis und auf
dem Desktop klappt es ja.

Da ich nicht der MAKE Experte bin, bitte ich hier um Unterstützung.

Danke

Autor: Imon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du machst es uns nicht gerade einfach dein Problem nachzufollziehen.
 schon wäre zu wissen was passiert wenn du die Zeile

 $(LD) $(LIBPATH1) $(LIBPATH2) $(LIBPATH3) $(FLAGS) -o $@ $^ $(LIBS)

von Hand nutz was wird ausgegeben? Exakte Fehlermeldung bitte und den 
Aufruf bereinigt von den Variablen und Platzhalter. Was zum Beispiel 
steht in $(FLAGS),
Ausserdem schreibst du das die .a Files da sind. ich Glaube du Arbeitest 
unter Windows, aber *.a sind unter Linux statische Libs. Wenn sich in 
dein
Linker Aufruf aber nicht irgendwo der Switch -static verbirgt wird deine 
Linker aber wahrscheinlich versuchen gegen die dynamischen Libs zu 
linken.
Bei Linux sind das *.so Datein, bei Windows dll ?

außerdem was ist mit den Headern zu denn Libs sind die vorhanden?

Im worst case hat deine Toolchain auch eine Problem und linkt gegen die 
host Versionen der Libarys, mal versucht auf denn system wo es gehen 
soll die Datein temporär umzubennen oder zu verschieben bzw die 
erzeugten Binaries gestartet ?

Autor: USBLIB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles viel einfacher, es geht jetzt.

Wie schon erwähnt, bin ich kein Experte für GCC. Arbeite auch zum ersten
mal mit einer selbstgemachten Library und dachte die Library
heisst in meinem Fall usbstack.a . In Wirklichkeit heisst sie aber
libusbstack.a . Diese wurde (weiss nicht warum) beim Kopieren vom
Desktop PC ausgelassen und fehlte.

Verm. typisches Anfängerproblem.

Danke jedoch für die indirekte Hilfe zur Selbsthilfe.

Wieder was gelernt!

Gruss

(btw. der GCC LIB Archive builder erzeugt  .a Dateien wenn man es im
makefile so angibt!)

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.