mikrocontroller.net

Forum: Compiler & IDEs Probleme mit libftdi


Autor: Michael Leske (nemesisod)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hermann-Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael Leske (nemesisod)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hermann-Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hermann-Josef (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... oder ganz elegant:
  g++ file.cpp $(libftdi-config --cflags) $(libftdi-config --libs) -o file
Das Tool wird da dankenswerterweise mitgeliefert.

Hermann-Josef

Autor: Michael Leske (nemesisod)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke,

jetzt klappt es.

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.