libsigrok - Dummy-Funktionen bei fehlender externer Library

OP #7279232
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 3 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.