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.
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
Hatte ich.
Ich übersetze immer alles am Stück.
Falls du ein tvscraper Plugin nutzt: Auch dieses neu übersetzen
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
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:
Der Linker kann TouchFile(char const*) zur Laufzeit nicht auflösen.
Was sagt eigentlich
ldd /usr/lib/vdr/libvdr-tvscraper.so.5
linux-vdso.so.1 (0x00007ffe105d7000)
libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f71e0642000)
libsqlite3.so.0 => /usr/lib64/libsqlite3.so.0 (0x00007f71e04f9000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f71e0200000)
libm.so.6 => /lib64/libm.so.6 (0x00007f71e0116000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f71e04d3000)
libc.so.6 => /lib64/libc.so.6 (0x00007f71dfe00000)
libnghttp2.so.14 => /usr/lib64/libnghttp2.so.14 (0x00007f71e04aa000)
libidn2.so.0 => /usr/lib64/libidn2.so.0 (0x00007f71dfa00000)
libssh.so.4 => /usr/lib64/libssh.so.4 (0x00007f71e00a7000)
libpsl.so.5 => /usr/lib64/libpsl.so.5 (0x00007f71df600000)
libssl.so.3 => /usr/lib64/libssl.so.3 (0x00007f71dfd4a000)
libcrypto.so.3 => /usr/lib64/libcrypto.so.3 (0x00007f71df000000)
libgssapi_krb5.so.2 => /usr/lib64/libgssapi_krb5.so.2 (0x00007f71e0456000)
libldap_r-2.4.so.2 => /usr/lib64/libldap_r-2.4.so.2 (0x00007f71e0052000)
liblber-2.4.so.2 => /usr/lib64/liblber-2.4.so.2 (0x00007f71e0446000)
libzstd.so.1 => /usr/lib64/libzstd.so.1 (0x00007f71dfc8b000)
libbrotlidec.so.1 => /usr/lib64/libbrotlidec.so.1 (0x00007f71dec00000)
libz.so.1 => /usr/lib64/libz.so.1 (0x00007f71e0037000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f71e0034000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f71e0031000)
/lib64/ld-linux-x86-64.so.2 (0x00007f71e081e000)
libunistring.so.2 => /usr/lib64/libunistring.so.2 (0x00007f71de800000)
libjitterentropy.so.3 => /usr/lib64/libjitterentropy.so.3 (0x00007f71e0027000)
libkrb5.so.3 => /usr/lib64/libkrb5.so.3 (0x00007f71df925000)
libk5crypto.so.3 => /usr/lib64/libk5crypto.so.3 (0x00007f71dfc74000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f71e0022000)
libkrb5support.so.0 => /usr/lib64/libkrb5support.so.0 (0x00007f71dfc65000)
libsasl2.so.3 => /usr/lib64/libsasl2.so.3 (0x00007f71dfc47000)
libbrotlicommon.so.1 => /usr/lib64/libbrotlicommon.so.1 (0x00007f71de400000)
libkeyutils.so.1 => /usr/lib64/libkeyutils.so.1 (0x00007f71de000000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f71dfc35000)
libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x00007f71df8f8000)
libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x00007f71df83c000)
Display More
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:
*** Plugin tvscraper:
WARNING: plugin tvscraper is using an old Makefile!
CC tvscraper.o
GT po/tvscraper.pot
PO po/de_DE.po
MO po/de_DE.mo
In Datei, eingebunden von tvscraper.c:8:
services.h:3:10: schwerwiegender Fehler: vdr/epg.h: Datei oder Verzeichnis nicht gefunden
3 | #include <vdr/epg.h>
| ^~~~~~~~~~~
Kompilierung beendet.
make[1]: *** [Makefile:39: tvscraper.o] Fehler 1
Display More
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
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:
#!/bin/bash
exec >b.log 2>&1
set -x
DO="$1"
[ -z "$DO" ] && DO=make
MAKE=0
INSTALL=0
[ "$DO" == "make" ] && MAKE=1
[ "$DO" == "install" ] && INSTALL=1
[ "$DO" == "all" ] && MAKE=1 && INSTALL=1
export LANG=en_US.UTF-8
# CPPFLAGS, nicht CFLAGS, da fuer den Präprozessor,
# nicht fuer den Compiler
export CPPFLAGS="-I/usr/local/include"
export LDFLAGS="-L/usr/local/lib64 -L/usr/local/lib64/dri"
export LIBVA_DRIVERS_PATH="/usr/local/lib64/dri:/usr/lib64/dri"
export LIBVA_DRIVER_NAME=iHD
# fuer xineliboutput
NOSIGNAL_IMAGE_FILE=/etc/vdr/plugins/xineliboutput/nosignal_720x576.mpg
export NOSIGNAL_IMAGE_FILE
STARTUP_IMAGE_FILE=/etc/vdr/plugins/xineliboutput/vdrlogo_720x576.mpg
export STARTUP_IMAGE_FILE
PARAMS=" \
NO_KBD=1 \
BINDIR=/usr/sbin \
CACHEDIR=/var/cache/vdr \
CONFDIR=/etc/vdr \
LOCDIR=/usr/share/vdr/locale \
MANDIR=/usr/share/man \
PREFIX=/usr \
RESDIR=/etc/vdr \
VIDEODIR=/var/spool/video
"
if [ $MAKE -eq 1 ]
then
make clean \
&& make clean-plugins \
&& make all $PARAMS
fi
if [ $? -eq 0 -a $INSTALL -eq 1 ]
then
P=$( pwd )
# install-conf install-plugins
if [ -d "/usr/lib/vdr" ]
then
mkdir -p /usr/lib/vdr.prev
rm -f /usr/lib/vdr.prev/*
mv /usr/lib/vdr/* /usr/lib/vdr.prev
fi
make install $PARAMS \
&& make install-plugins $PARAMS
if [ -d PLUGINS/src/xineliboutput ]
then
cd PLUGINS/src/xineliboutput \
&& make install \
&& cp *.mpg /etc/vdr/plugins/xineliboutput
fi
if [ -d PLUGINS/src/tvscraper/PLUGINS/example ]
then
cd PLUGINS/src/tvscraper/PLUGINS/example \
&& make \
&& make install
fi
cd "$P"
f="PLUGINS/src/graphtftng/graphtft-fe/graphtft-fe"
[ -e "$f" ] && cp "$f" /usr/bin
ldconfig -v
fi
Display More
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?
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
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....
Don’t have an account yet? Register yourself now and be a part of our community!