libsigrok - Dummy-Funktionen bei fehlender externer Library

OP #7279232
Lesenswert?

ich habe für mein PicoScope 2208B einen Treiber für libsigrok erstellt, 
der inzwischen auch einigermaßen läuft (nur digitale Kanäle).
Eigentlich würde ich den Code gerne dem Projekt zur Verfügung stellen, 
wenn da nicht das Problem mit der proprietären Bibliothek von Picotech 
wäre.
Ohne die lässt sich z.B. auch Pulseview nicht starten, auch wenn gar 
kein PicoScope angeschlossen ist:

pulseview: error while loading shared libraries: libps2000a.so.2: cannot 
open shared object file: No such file or directory

Ist ja auch logisch, da Funktionen aus dieser Bibliothek genutzt werden. 
Der Fehler kommt von meiner compilierten libsigrok, die ihrerseits 
Funktionen aus der libps2000a aufruft. Ich könnte jetzt zwar eine eigene 
libps2000a.so mit Dummy-Funktionen erstellen, aber das ist meiner 
Meinung nach keine "saubere" Lösung.

Gibt es eine Möglichkeit, dass beim Fehlen dieser Bibliothek z.B. 
Dummy-Funktionen (ähnlich wie "weak") aufgerufen werden oder wir mir der 
Loader (ld.so) da immer einen Strich durch die Rechnung machen?

Jörg
OP #7281294
Lesenswert?

Danke, das muss ich mir mal ansehen. Funktioniert das auch IN dynamisch 
geladenen Bibliotheken, die Funktionen aus weiteren Bibliotheken 
aufrufen? Oder geschieht das durch das Programm, welches die Bibliothek 
lädt?

Wahrscheinlich ist es auch sinnvoll, mit den Entwicklern Kontakt 
aufzunehmen, letztendlich sollte es ja auf allen unterstützten 
Plattformen funktionieren und das kann ich sowieso nicht allein 
bewerkstelligen.

Jörg
Gast #7281502
Lesenswert?

Unter Linux musst du nur drauf achten, dass ldd keine fehlenden 
Libraries meldet.

Also entweder (dlopen & co) oder $LD_LIBRARY_PATH setzen, damit es eine 
von dir erstelle Dummylibrary findet, falls keine echte Library 
vorhanden.

Was die über dlopen geladenen Libraries brauchen, bemängelt ldd nicht. 
Die Fehlermeldung bekommst du erst vom dlopen.

Diese beiden Strategien sollten unter jedem Betriebssystem 
funktionieren. Ich finde dlopen einfacher zu portieren. Man hat zwar 
einmal den Aufwand in der Programmierung, muss aber nachher nicht für 
jedes BS andersartige Scripte bauen.
OP #7283687
Lesenswert?

Vielen Dank, ich habe es jetzt mit dlopen umgesetzt und es funktioniert 
prima. Als Nächstes muss ich mir wohl Pulseview vornehmen, allerdings 
ist das QT und davon hab ich relativ wenig Ahnung. Aber es fehlen mir 
halt einfach ein paar Dinge oder funktionieren nicht so, wie erwartet. 
Die Entwickler kann man scheinbar nur über IRC erreichen, aber da wird 
sich auch eine Lösung finden.

Jörg

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren