[solved][tvscraper] ERROR: /usr/lib/vdr/libvdr-tvscraper.so.5: undefined symbol: _Z9TouchFilePKc

  • Hi,


    mit VDR 2.7.2 und der aktuellsten tvscraper Version aus dem GIT bekomme ich beim Laden die Fehlermeldung aus dem Betreff.


    Was passt denn da nicht?


    Danke und ciao.

    Michael.

  • Nach der installation von VDR 2.7.2 tvscraper neu übersetzen und installieren

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Hatte ich.

    Ich übersetze immer alles am Stück.

  • Klar, wie gesagt - ich habe alles am Stück neu übersetzt.

  • Habs grad nochmal alles neu gebaut inkl. aller Plugins und auch des example-Plugin für tvscraper - keine Änderung.

  • Da ich selbst VDR 2.7.2 + tvscraper (aktuelles git) verwende, kann es eigentlich kein prinzipielles Problem sein.


    Vor dem Übersetzen des example-Plugins alle *.o, ... Dateien des example-Plugins gelöscht? Make erkennt nicht, dass sich etwas geändert hat und neu übersetzt werden muss, nur weil sich VDR header geändert haben

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Da ich selbst VDR 2.7.2 + tvscraper (aktuelles git) verwende, kann es eigentlich kein prinzipielles Problem sein.


    Vor dem Übersetzen des example-Plugins alle *.o, ... Dateien des example-Plugins gelöscht? Make erkennt nicht, dass sich etwas geändert hat und neu übersetzt werden muss, nur weil sich VDR header geändert haben

    Wenn es eine neue Version des VDR gibt, erstelle ich immer ein neues Verzeichnis, hole dann die benötigten Plugins und baue alles. Da sind zu dem Zeitpunkt noch keinerlei .o Files vorhanden. Und weil ich paranoid bin, ist in meinem Build-Script auch immer ein make clean drin:

    Code
      make clean \
      && make clean-plugins \
      && make all $PARAMS
  • Der Linker kann TouchFile(char const*) zur Laufzeit nicht auflösen.

    Was sagt eigentlich


    ldd /usr/lib/vdr/libvdr-tvscraper.so.5

  • make clean \ && make clean-plugins \ && make all $PARAMS

    Ich habe damit das Problem, das bei mir dann tvscraper nicht übersetzt wird. Es gibt dann eine Fehlermeldung:

    Wenn ich es dann aber im Plugin-Verzeichnis selbst übersetze, funktioniert es. Ich habe das bisher noch nicht weiter verfolgt, weil ich doch meist in den Plugin-Verzeichnissen kompiliere.


    Schau doch mal, ob es bei Dir die neue libvdr-tvscraper.so überhaupt gibt.


    Grüße

    kamel5

    VDR 2.7.3: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 40 Kernel 6.11 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Jo, die gips - siehe Ausgabe von ldd da oben.

    Und ich habe keine Probleme mit dem Bauen auf diese Weise.


    Hier mal mein ganzes Build-Script:


  • Ein einfaches "make" und danach eine "make install" in deinem Skript würde doch vollkommen ausreichen, um den VDR mit Plugins zu bauen und zu installieren, oder täusche ich mich?


    Sämtliche Variablen und "$PARAMS" könntest du auch in deiner Make.Config ablegen.

    Was passiert, wenn es beim Build keine /usr/lib/vdr.prev mehr gibt und wofür wird LDFLAGS gesetzt und exportiert?

  • Und was sagt


    Code
    nm -gDC  /usr/lib/vdr/libvdr-tvscraper.so.5 | grep TouchFile

    ? Und was sagt

    Code
    nm -gD  /usr/lib/vdr/libvdr-tvscraper.so.5 | grep TouchFile

    ?

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

    Edited once, last by MarkusE ().

  • Ein einfaches "make" und danach eine "make install" in deinem Skript würde doch vollkommen ausreichen, um den VDR mit Plugins zu bauen und zu installieren, oder täusche ich mich?


    Sämtliche Variablen und "$PARAMS" könntest du auch in deiner Make.Config ablegen.

    Was passiert, wenn es beim Build keine /usr/lib/vdr.prev mehr gibt und wofür wird LDFLAGS gesetzt und exportiert?

    Make.config will ich nicht nutzen, weil ich das immer rumkopieren müsste. Ich nehme ja immer ein neues Verzeichnis für jede neue Version. Und was spricht gegen die $PARAMS? Funktioniert doch alles.

    Nicht böse sein, aber ich finde es schon lustig, wenn ich was Funktionierendes poste und dann Vorschläge kriege, wie ich es anders machen könnte ^^

    Ansonsten ist es egal, ob es beim Build /usr/lib/vdr.prev gibt oder nicht, weil ich es anlege, wenn es nicht da ist. Außerdem ist es eh nur eine Paranoia-Funktion. Der VDR braucht sowas ja nicht.

  • worker.c benutzt aus <vdr/tools.h>


    void TouchFile(const char *FileName, bool Create = false);


    Aber es fehlt das #include <vdr/tools.h> dazu

  • Und was sagt


    Code
    nm -gDC  /usr/lib/vdr/libvdr-tvscraper.so.5 | grep TouchFile

    ? Und was sagt

    Code
    nm -gD  /usr/lib/vdr/libvdr-tvscraper.so.5 | grep TouchFile

    ?

    Code
    nm -gDC  libvdr-tvscraper.so.5 | grep TouchFile
                     U TouchFile(char const*)
    
    nm -gD  libvdr-tvscraper.so.5 | grep TouchFile
                     U _Z9TouchFilePKc
  • Naja, es scheint ja nicht zu funktionieren, oder? Vielleicht liege ich ja auch mit meinen Tips komplett falsch.

    Dein nm -gDC sollte jedenfalls so aussehen:


    U TouchFile(char const*, bool)

  • Naja, es scheint ja nicht zu funktionieren, oder? Vielleicht liege ich ja auch mit meinen Tips komplett falsch.

    Dein nm -gDC sollte jedenfalls so aussehen:


    U TouchFile(char const*, bool)

    Meinst du echt, das liegt an meinem Build-Script? Das nutze ich seit Jahren und hatte damit noch nie Probleme.

  • Ich weiß es nicht. Aber bei solchen Fehlern suche ich immer nach Fehlern beim Linken, alten oder doppelten Headern, z.B. in /usr/* und /usr/local/* etc.

    Wenns bei anderen funktioniert, die ein einfaches make && make install absetzen, könnte man die Fehlersuche so angehen, dass du erst mal dein build skript abspeckst - nicht generell, sondern explizit LDFLAGS etc. hinterfragst.

    Aber wie gesagt, ich bin wahrlich kein Kompilier-Fachmann....

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!