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
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 ?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.