Hallo zusammen, ich habe mir die aktuelle Version der libftdi runtergeladen und auf meinem Linuxsystem installiert. Die ftdi.h wird auch gefunden, aber wenn ich die Funktionen aufrufe wird mir folgender Fehler ausgegeben: "undefined reference to `ftdi_init'" Also findet er die passende ftdi.c datei nicht. Habe ich etwas bei der installation falsch gemacht? bin noch relativ neu bei Linux. habe folgende Befehle ausgeführt: tar -xvzf libftdi-0.14.tar.gz dann im Ordner ./configure make make install Das müsste doch eigentlich richtig sein. Libusb habe ich auch installiert. Kann mir jemand helfen?? Gruß Nemesis
Hallo Michael, in Deinem Makefile musst Du auch mit der Bibliothek linken, also sollte mindesten ein -lftdi (so die Bibliothek libftdi.a oder libftdi.so heißt) in der Kommandozeile für den Linker drin stehen. Falls das 'make install' die Bibliothek nicht in einen Standardpfad (wie z.B. /lib, /usr/lib oder /usr/local/lib) installiert hat, muss man auch noch den angeben: -L<path_to_library> also z.B. -L/opt/ftdi/lib -lftdi Womöglich ist schon /usr/local/lib nicht mehr Standard... Da ich das Produkt nicht kenne, kann ich bezüglich weiterer Optionen auch nur raten, bei einer dynamischen Bibliothek (= endet auf .so) muss der Pfad zu ihr entweder via Environment-Variable LD_LIBRARY_PATH bekannt gemacht sein oder in /etc/ld.so.config drin stehen und via ldconfig bekannt gemacht worden sein. Viel Erfolg Hermann-Josef
Ich nutze keine makefile, ich compiliere immer mit g++ file.cpp -o file wie könnte denn eine std. makefile aussehen??? danke für deine Antwort Gruß Nemesis
Hallo, tja, mal für die Kommandozeile sinngemäß und dann auch einfacher: g++ file.cpp -lftdi -lusb -o file unter der Annahme libusb und libftdi sind in Standard-Pfaden installiert, ist auch recht wahrscheinlich. oder g++ file.cpp -L/usr/local/lib -lftdi -lusb -o file Bei kleinen Projekten lohnt sich ein Makefile noch nicht so richtig, außer wenn man generell schreibfaul ist, 'make' ist halt schneller zu tippen. Habe das mal auf meine alte SuSE 9.1 draufgezogen, es geht in der Tat nach /usr/local/lib und es ist eine dynamische Bibliothek. Nur statisch linken würde man dann mittels: g++ -static file.cpp -L/usr/local/lib -lftdi -lusb -o file oder nur libftdi.a statisch linken: g++ file.cpp /usr/local/lib/libftdi.a -lusb -o file Hermann-Josef
... oder ganz elegant:
1 | g++ file.cpp $(libftdi-config --cflags) $(libftdi-config --libs) -o file |
Das Tool wird da dankenswerterweise mitgeliefert. Hermann-Josef
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.