[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.

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • Hatte ich.

    Ich übersetze immer alles am Stück.

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • Klar, wie gesagt - ich habe alles am Stück neu übersetzt.

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • Habs grad nochmal alles neu gebaut inkl. aller Plugins und auch des example-Plugin für tvscraper - keine Änderung.

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • 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

  • 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
    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • Der Linker kann TouchFile(char const*) zur Laufzeit nicht auflösen.

    Was sagt eigentlich

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

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • 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.7: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 10TB HD mit ZFS RaidZ, GT1030, Fedora 42 Kernel 6.17 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:

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • 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?

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • 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

    ?

  • 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.

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • worker.c benutzt aus <vdr/tools.h>

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

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

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • 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
    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • 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)

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

  • 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.

    VDR zwei drei
    • VDR 01 (Server): VDR 2.7.7 - 4 x TT Budget S2-3200
      Plugins: [channellists - control - epgsearch - live - markad - streamdev-server - tvscraper]
    • VDR 02 (Client): VDR 2.7.5 - 1 x TT Premium S2-6400 (HDMI an TV), 1 x softhddevice (HDMI an TV); TV Grundig 40 VLE 8160 SL; TFT-Display Origen AE 16T
      Plugins: [channellists - control - dvbhddevice - epgsync - graphtftng - iptv - osdteletext - skinnopacity - softhddevice - svdrpservice - tvscraper]
  • 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....

    Meine VDRs

    (SatIP Server) --- Kathrein Exip 418 ---
    (Server) --- HW: RPI5 --- SW: RPiOs, VDR 2.7.7 mit streamdev, satip/vtuner-ng, live, epgsearch, markad ---
    (Client 1) --- HW: RPI4 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (Client 2) --- HW: Radxa Rock 4 Plus - RK3399 --- SW: VDR*ELEC mit softhddevice-drm-gles ---
    (WIP) --- Tanix TX6, RPi5, RPi4, Odroid N2+, WetekPlay2 --- SW: VDR*ELEC mit softhddevice-drm-gles --

Participate now!

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