ROBO LT controlle unter Linux mit libroboint
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
ROBO LT controlle unter Linux mit libroboint
Hi liebes Forum,
ich bin ein glücklicher Mann, weil ich zu Weihnachten von meiner Familie ein LT Beginner Set geschenkt bekommen habe.
Da ich aber nur einen Linux-Rechner (Ubuntu 14.04 LTS) mein eigen nenne, habe ich zwar die beigefügte Software in einer VM mit Win 7 ausprobiert, hat auch funktioniert, konnte aber zu wenig...
Dann bin ich auf libroboint gestoßen, das ließ sich problemlos mit dem richtigen rep. installieren und ftdiagnose funzt, Schalter, Motoren, Lämpchen lässt sich alles ansteuern. Das Beispielprogramm steuert ebenfalls wie vorgehesen einen angeschlossenen Motor.
Nun aber mein Problem. Mit C habe ich bisher noch nicht viel gemacht, allerdings mit anderen Sprachen. Ich habe example.c ein wenig verändert und wollte es mit gcc zu einem ausführbaren Programm verwandeln, erhalte jedoch bei Eingabe von gcc -o e1 example.c folgende Fehlermeldungen:
/tmp/ccf4UEAA.o: In Funktion `main':
example.c:(.text+0x19): Nicht definierter Verweis auf `InitFtUsbDeviceList'
example.c:(.text+0x1e): Nicht definierter Verweis auf `GetNumFtUsbDevice'
example.c:(.text+0x39): Nicht definierter Verweis auf `GetFtUsbDeviceHandle'
example.c:(.text+0x49): Nicht definierter Verweis auf `OpenFtUsbDevice'
example.c:(.text+0x5a): Nicht definierter Verweis auf `StartFtTransferArea'
example.c:(.text+0x66): Nicht definierter Verweis auf `GetFtTransferAreaAddress'
example.c:(.text+0xcc): Nicht definierter Verweis auf `StopFtTransferArea'
example.c:(.text+0xd8): Nicht definierter Verweis auf `CloseFtDevice'
collect2: error: ld returned 1 exit status
Scheinbar findet gcc die roboint.h nicht, die jedoch testweise sowohl in
/usr/include
/usr/local/include
als auch im selben Verzeichnis wie example.c liegt.
example.c beinhaltet die Anweisung: #include "roboint.h"
Hat jemand einen Tipp für mich? Ist vermutlich eher ein Problem von C, jedoch haben andere C-Dateien, die ich in ausführbare Programme umwandeln musste bisher funktioniert...
Viele Grüße
Andreas
ich bin ein glücklicher Mann, weil ich zu Weihnachten von meiner Familie ein LT Beginner Set geschenkt bekommen habe.
Da ich aber nur einen Linux-Rechner (Ubuntu 14.04 LTS) mein eigen nenne, habe ich zwar die beigefügte Software in einer VM mit Win 7 ausprobiert, hat auch funktioniert, konnte aber zu wenig...
Dann bin ich auf libroboint gestoßen, das ließ sich problemlos mit dem richtigen rep. installieren und ftdiagnose funzt, Schalter, Motoren, Lämpchen lässt sich alles ansteuern. Das Beispielprogramm steuert ebenfalls wie vorgehesen einen angeschlossenen Motor.
Nun aber mein Problem. Mit C habe ich bisher noch nicht viel gemacht, allerdings mit anderen Sprachen. Ich habe example.c ein wenig verändert und wollte es mit gcc zu einem ausführbaren Programm verwandeln, erhalte jedoch bei Eingabe von gcc -o e1 example.c folgende Fehlermeldungen:
/tmp/ccf4UEAA.o: In Funktion `main':
example.c:(.text+0x19): Nicht definierter Verweis auf `InitFtUsbDeviceList'
example.c:(.text+0x1e): Nicht definierter Verweis auf `GetNumFtUsbDevice'
example.c:(.text+0x39): Nicht definierter Verweis auf `GetFtUsbDeviceHandle'
example.c:(.text+0x49): Nicht definierter Verweis auf `OpenFtUsbDevice'
example.c:(.text+0x5a): Nicht definierter Verweis auf `StartFtTransferArea'
example.c:(.text+0x66): Nicht definierter Verweis auf `GetFtTransferAreaAddress'
example.c:(.text+0xcc): Nicht definierter Verweis auf `StopFtTransferArea'
example.c:(.text+0xd8): Nicht definierter Verweis auf `CloseFtDevice'
collect2: error: ld returned 1 exit status
Scheinbar findet gcc die roboint.h nicht, die jedoch testweise sowohl in
/usr/include
/usr/local/include
als auch im selben Verzeichnis wie example.c liegt.
example.c beinhaltet die Anweisung: #include "roboint.h"
Hat jemand einen Tipp für mich? Ist vermutlich eher ein Problem von C, jedoch haben andere C-Dateien, die ich in ausführbare Programme umwandeln musste bisher funktioniert...
Viele Grüße
Andreas
Re: ROBO LT controlle unter Linux mit libroboint
It looks like a linker errror, not a compiler error. So the problem is not the include files but library or object files.
Re: ROBO LT controlle unter Linux mit libroboint
Thank you. I looked for the library files and found them in /usr/lib and /usr/local/lib: libroboint.so -> libroboint.so.0 -> libroboint.so.0.5.3
I tried the command
gcc -L/usr/local/lib -I/usr/local/include -o e1 example.c
with the same errors. I did not find any object-files.
The command
gcc -S -L/usr/local/lib -I/usr/local/include example.c
ends without error and creates example.c
The command
gcc -c -L/usr/local/lib -I/usr/local/include example.c
ends without errors, too. The file example.o is created.
Any ideas? Thank you for your help.
Andreas
I tried the command
gcc -L/usr/local/lib -I/usr/local/include -o e1 example.c
with the same errors. I did not find any object-files.
The command
gcc -S -L/usr/local/lib -I/usr/local/include example.c
ends without error and creates example.c
The command
gcc -c -L/usr/local/lib -I/usr/local/include example.c
ends without errors, too. The file example.o is created.
Any ideas? Thank you for your help.
Andreas
Re: ROBO LT controlle unter Linux mit libroboint
Hallo Andreas,
gcc -L/usr/local/lib -I/usr/local/include -lroboint -o e1 example.c
Viele Grüße
Torsten
es genügt nicht, nur den Pfad zu den Include- und Library-Dateien zu setzen. Die Libraries müssen explizit dazugelinkt werden. Versuche mal das folgende Kommando:AHoppe hat geschrieben:I looked for the library files and found them in /usr/lib and /usr/local/lib: libroboint.so -> libroboint.so.0 -> gcc -L/usr/local/lib -I/usr/local/include -o e1 example.c
gcc -L/usr/local/lib -I/usr/local/include -lroboint -o e1 example.c
Viele Grüße
Torsten
Re: ROBO LT controlle unter Linux mit libroboint
Hi Torsten,
danke für den HInweis, aber leider macht mein gcc mit
gcc -I/usr/local/include -L/usr/local/lib -lroboint -o e1 example.c
immer noch:
/tmp/ccjMpyr1.o: In Funktion `main':
example.c:(.text+0x19): Nicht definierter Verweis auf `InitFtUsbDeviceList'
example.c:(.text+0x1e): Nicht definierter Verweis auf `GetNumFtUsbDevice'
example.c:(.text+0x39): Nicht definierter Verweis auf `GetFtUsbDeviceHandle'
example.c:(.text+0x49): Nicht definierter Verweis auf `OpenFtUsbDevice'
example.c:(.text+0x5a): Nicht definierter Verweis auf `StartFtTransferArea'
example.c:(.text+0x66): Nicht definierter Verweis auf `GetFtTransferAreaAddress'
example.c:(.text+0xcc): Nicht definierter Verweis auf `StopFtTransferArea'
example.c:(.text+0xd8): Nicht definierter Verweis auf `CloseFtDevice'
collect2: error: ld returned 1 exit status
Ich schmeiße jetzt mal das rep und die über die Paketverwaltung installierten Dateien raus und übersetze alles aus den Quellen direkt, vielleicht hilfts. Ansonsten übernimmt vorerst mal python die Ansteuerung, geht auch, dann lerne ich das wenigstens.
Viele Grüße
Andreas
danke für den HInweis, aber leider macht mein gcc mit
gcc -I/usr/local/include -L/usr/local/lib -lroboint -o e1 example.c
immer noch:
/tmp/ccjMpyr1.o: In Funktion `main':
example.c:(.text+0x19): Nicht definierter Verweis auf `InitFtUsbDeviceList'
example.c:(.text+0x1e): Nicht definierter Verweis auf `GetNumFtUsbDevice'
example.c:(.text+0x39): Nicht definierter Verweis auf `GetFtUsbDeviceHandle'
example.c:(.text+0x49): Nicht definierter Verweis auf `OpenFtUsbDevice'
example.c:(.text+0x5a): Nicht definierter Verweis auf `StartFtTransferArea'
example.c:(.text+0x66): Nicht definierter Verweis auf `GetFtTransferAreaAddress'
example.c:(.text+0xcc): Nicht definierter Verweis auf `StopFtTransferArea'
example.c:(.text+0xd8): Nicht definierter Verweis auf `CloseFtDevice'
collect2: error: ld returned 1 exit status
Ich schmeiße jetzt mal das rep und die über die Paketverwaltung installierten Dateien raus und übersetze alles aus den Quellen direkt, vielleicht hilfts. Ansonsten übernimmt vorerst mal python die Ansteuerung, geht auch, dann lerne ich das wenigstens.
Viele Grüße
Andreas
Re: ROBO LT controlle unter Linux mit libroboint
Also mit "alles platt machen und wieder neu installieren", egal ob über die Paketverwaltung oder händisch, wars nicht getan.
Ich habe jetzt mal aus example.c eine ganze Menge auskommentiert und als "Hello World" umgeschrieben:
Das auskommentierte habe ich gelöscht. gcc -lroboint -o e1 example.c läuft jetzt ohne Probleme durch.
Um bsp. InitFtUsbDeviceList() nutzen zu können, dafür ist doch #include "roboint.h" zuständig, oder? Oder habe ich da einen durch php und js zu arg eingeschränkten Horizont?
Viele Grüße
Andreas
Ich habe jetzt mal aus example.c eine ganze Menge auskommentiert und als "Hello World" umgeschrieben:
Code: Alles auswählen
/** @file */
#include <stdio.h>
#include <usb.h>
#include "roboint.h"
/**
* \brief real word example
*
* This example will start running Motor 1 with low speed to the right, wait 2 seconds
* and then max speed to the left until the input #1 is high
*
*/
int main() {
FT_HANDLE hFt = NULL;
FT_TRANSFER_AREA *transfer_area = NULL;
printf ("Hello World");
return 0;
}
Um bsp. InitFtUsbDeviceList() nutzen zu können, dafür ist doch #include "roboint.h" zuständig, oder? Oder habe ich da einen durch php und js zu arg eingeschränkten Horizont?
Viele Grüße
Andreas
Re: ROBO LT controlle unter Linux mit libroboint
Problem gelöst. Die Lösung habe ich hier gefunden: https://wiki.ubuntuusers.de/GCC
gcc wird wie folgt aufgerufen: gcc -o e1 example.c -lroboint
-lroboint also erst ganz hinten... Und jetzt klappts...
Danke an alle Helfer.
Viele Grüße
Andreas
gcc wird wie folgt aufgerufen: gcc -o e1 example.c -lroboint
-lroboint also erst ganz hinten... Und jetzt klappts...
Danke an alle Helfer.
Viele Grüße
Andreas
Re: ROBO LT controlle unter Linux mit libroboint
Es gibt übrigens auch u.a. einen Python Wrapper der etwas einsteigerfreundlicher sein sollte.
"Propaganda does not deceive people; it merely helps them to deceive themselves."
E Hoffer
E Hoffer
Re: ROBO LT controlle unter Linux mit libroboint
Ja, den habe ich schon ausprobiert und für gut befunden, aber ich wollte eh in C einsteigen und da passt das jetzt ganz gut.
Viele Grüße und einen guten Rutsch ins Forum
Andreas
Viele Grüße und einen guten Rutsch ins Forum
Andreas