QextSerialPort endlich zum Laufen bringen

Verschiedenes zu Qt
Snafu
Beiträge: 12
Registriert: 8. Januar 2008 19:41

QextSerialPort endlich zum Laufen bringen

Beitrag von Snafu »

Hallo!
Ich versuche schon ewig den QextSerialPort unter Debian zum Laufen zu bringen. Ich habs runtergeladen & kompiliert, dann kommt ein Ordner build wo die .so Datei drin is.
Alles im build Ordner hab ich nach /usr/lib/qextserialport kopiert.
Rechte für alle r-x.
Die .h Dateien von QextSerialPort hab ich nach /usr/include/qextserialport kopiert, mit r-- für alle.
Ich kann jetzt das Demoprog erfolgreich kompilieren, nachdem ich die .pro Datei angepasst hab (siehe Code Bereich). Wenn ich dann jedoch das Programm ausführen will, dann kommt "./QESPTA: error while loading shared libraries: libqextserialport.so.1: cannot open shared object file: No such file or directory".

Wie bring ich das verflixte Ding zum Laufen? Ich hab die Dateien deshalb nach /usr/lib und /usr/include verschoben, damit ich die ned bei jedem Projekt dazukopieren muss.

Ich sag schonmal Danke!

Code: Alles auswählen

######################################################################
# QextSerialPort Test Application (QESPTA)
######################################################################


PROJECT = QESPTA
TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += /usr/include/qextserialport


OBJECTS_DIR    = obj
MOC_DIR        = moc
UI_DIR         = uic
CONFIG      += qt thread warn_on


HEADERS += MainWindow.h \
		MessageWindow.h \
		QespTest.h

SOURCES += main.cpp \
		MainWindow.cpp \
		MessageWindow.cpp \
		QespTest.cpp

LIBS          += -L/usr/lib/qextserialport -lqextserialport

unix:DEFINES   = _TTY_POSIX_
win32:DEFINES  = _TTY_WIN_ QWT_DLL QT_DLL
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

ldconfig vergessen aufzurufen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Snafu
Beiträge: 12
Registriert: 8. Januar 2008 19:41

Beitrag von Snafu »

.... :oops:
Danke!
drakon
Beiträge: 5
Registriert: 25. September 2008 02:41

Beitrag von drakon »

Hallo!
Ich habe mir qextserialport heruntergeladen und kompiliert. Auch das Beispiel QESPTA konnte ich kompilieren. Aber beim Starten von QESPTA kommt:
./QESPTA: error while loading shared libraries: libqextserialport.so.1: cannot open shared object file: No such file or directory
Ich habe die Libs und das Programm nicht verändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

LD_LIBRARY_PATH falsch/nicht gesetzt
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
drakon
Beiträge: 5
Registriert: 25. September 2008 02:41

Beitrag von drakon »

Danke für deine Antwort. Wie ich schon sagte, ich habe so kompiliert wie es war. Wenn ich das pro-File mit LD_LIBRARY_PATH += ../../build ergänze passiert genau das gleiche.

Code: Alles auswählen

######################################################################

# QextSerialPort Test Application (QESPTA)

######################################################################





PROJECT = QESPTA

TEMPLATE = app

DEPENDPATH += .

INCLUDEPATH += ../..

QMAKE_LIBDIR += ../../build

LD_LIBRARY_PATH += ../../build 



OBJECTS_DIR    = obj

MOC_DIR        = moc

UI_DIR         = uic

CONFIG      += qt thread warn_on





HEADERS += MainWindow.h \

		MessageWindow.h \

		QespTest.h



SOURCES += main.cpp \

		MainWindow.cpp \

		MessageWindow.cpp \

		QespTest.cpp



LIBS          += -lqextserialport



unix:DEFINES   = _TTY_POSIX_

win32:DEFINES  = _TTY_WIN_ QWT_DLL QT_DLL

Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Du hast aber schonmal davor unter Linux entwickelt, oder?
Suche bitte bei google nach LD_LIBRARY_PATH und informiere Dich erstmal über Deine Entwicklungs/Arbeitsumgebung.
LD_LIBRARY_PATH ist eine Umgebungsvariable...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
drakon
Beiträge: 5
Registriert: 25. September 2008 02:41

Beitrag von drakon »

Noch nie :)

Es hat geholfen! Danke!

Muss man LD_LIBRARY_PATH auch dann setzen, wenn ich die Libs in das gleiche Verzeichnis verschiebe, wo das Programm ist?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Ja, ich denke schon.
Am sinnvollsten ist Du verschiebst sie nach /usr/loclal/lib(64) und rufst dann ldconfig auf. Oder fügst deinen Pfad zu /etc/ld.so.conf hinzu (icht zu empfehlen)
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
solarix
Beiträge: 1133
Registriert: 7. Juni 2007 19:25

Beitrag von solarix »

ja, das ist so.. (verschieben in Programmpfad bringt nichts).. ausser natürlich man fügt einmalig "export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:." in ein startscript ein..

Im Zweifelsfall mit "ldd meinprogramm" die Verfügbarkeit überprüfen...
drakon
Beiträge: 5
Registriert: 25. September 2008 02:41

Beitrag von drakon »

Vielen Dank für die Hilfe!
drakon
Beiträge: 5
Registriert: 25. September 2008 02:41

Beitrag von drakon »

Hallo!

Ich habe qextserialport schon zum Laufen gebracht. Außerdem habe ich ein Thread erstellt, der mir ein Signal gibt, wenn die Daten da sind. Jetzt kommt mein nächstes Problem. Das Gerät gibt mir Nachrichten, die mit CR terminiert sind. Darauf soll an das Gerät "OK" gesendet werden. Meine Frage ist, wie man am geschickten die Nachrichten verarbeiten sollte? Ich habe bereits gesehen, dass es vorkommen kann, dass nicht die ganze Nachricht im Buffer ist, sondern nur ein Teil davon. Wie geht man damit am besten um?
pepade
Beiträge: 11
Registriert: 29. September 2008 11:44

Beitrag von pepade »

am besten liest du nur byteweise ein... somit hast du nicht das problem, wenn zu viele/ wenige bytes zurueckkommen... wie sieht deine loesung fuer das signal aus?
QuaGS
Beiträge: 5
Registriert: 10. August 2009 19:28

... nimmt kein Ende

Beitrag von QuaGS »

Ich habe mittlerweile etliche Docs im Netz recherchiert, komme aber nicht zum Ziel. Das liegt sicher auch daran, dass ich sehr wenig Ahnung von Linux habe.
Mehrfach habe ich die Anleitung aus dem Wiki (http://www.qtwiki.de/wiki/QextSerialPort) Schritt für Schritt nachvollzogen, komme aber nicht wirklich zum Ziel. Das blöde ist, das es schon mehrfach gefunzt hat, meistens mit Anlaufschwierigkeiten, heute aber: KEINE CHANCE! Ja, Chance (das ist ja bekanntlich ein Wort für Glück) muss es wohl sein, wenn es laufen soll.
Ich habe also den Code runter geladen, qextserialport compiliert (ohne Fehler), alle Kopier- und sonstigen Schritte, die im Wiki empfohlen wurden durchgeführt, Die pro-Datei meines Projektes wie empfohlen angepasst.
Das Compilieren läuft ohne Fehler - schon mal ganz positiv.
Das Programm startet aber nicht, weil der schon hinlänglich genannte Fehler
Starte /home/ernst/qt-projekte/seriell4-build-desktop/seriell4...
/home/ernst/qt-projekte/seriell4-build-desktop/seriell4: error while loading shared libraries: libqextserialportd.so.1: cannot open shared object file: No such file or directory
/home/ernst/qt-projekte/seriell4-build-desktop/seriell4 beendet, Rückgabewert 127
auftritt.
Ich habe schon viele Stunden mit qextserialport arbeiten können, ohne Fehlermeldung, heute aber geht gar nichts! Auch die Eingabe des Befehls ldconfig, der ohne Rückmeldung abläuft, konnte meine Maschine mit Ubuntu 10.10 nicht dazu bewegen da weiter zu machen, wo ich in der letzten Woche schon mehrfach war.
Für mich auffällig:
bei dem Befehl

Code: Alles auswählen

echo $LD_LIBRARY_PATH
kommt nur eine leere Zeile zurück.
ver suche ich es mit dem Befehl

Code: Alles auswählen

sudo ldconfig /usr/lib/qextserialport/
, wie für QESPA empfohle escheint die Meldung
/sbin/ldconfig.real: /usr/lib/qextserialport/libqextserialportd.so.1 ist kein symbolischer Link
In der Hoffnung auf konstruktive Beiträge.
Danke, Ernst
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Da /usr/lib/qextserialport/ kein Standardpfad (siehe /etc/ld.so.conf) ist muss er in LD_LIBRARY_PATH eingetragen werden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten