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


von USBLIB (Gast)


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

von Imon (Gast)


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 ?

von USBLIB (Gast)


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!)

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.