1
Drivers / Re:QNAP and ARM devices: libmediaclient.so cannot be preloaded after updating glibc
« am: Mai 13, 2018, 11:22:30 Vormittag »
I still cannot understand why the system gives those errors. Here's the summary.
New TVHeadend version and dynamic loader for arm:
To use the Sundtek tuner by preloading the library with this TVHeadend, the only version that works armsysv, which is the following (EABI4):
The armsysvhf version of the library, instead, doesn't work with TVHeadend because it doesn't find /dev and it's the following:
I'm pretty confused about this situation, because I though that EABI5 version 1 should work everywhere but this is not the case. Maybe the difference is the tag GNU/Linux instead of SYSV? I don't know...
I'll try to use LD_PRELOAD directly on the Linux loader instruction, instead of exporting the environment variable (which then applies also to other Busybox commands) to avoid the errors, but it's really a behaviour that I would like to understand. And Google doesn't seem to be my friend this time
New TVHeadend version and dynamic loader for arm:
Code: [Auswählen]
# file ./tvheadend
../tvheadend: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 3.2.0, BuildID[sha1]=92d8e0271ca790df2a030939e0dded2b4d2cff71, not stripped
# file ./ld.so
ld.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, BuildID[sha1]=4e62b2761d7a64fc51fd22235cff9e0ce5fccaa3, stripped
To use the Sundtek tuner by preloading the library with this TVHeadend, the only version that works armsysv, which is the following (EABI4):
Code: [Auswählen]
# file ./libmediaclient.so
/share/CACHEDEV1_DATA/.qpkg/TVH_Dev_Sundtek/sundtek/opt/lib/libmediaclient.so: ELF 32-bit LSB shared object, ARM, EABI4 version 1 (SYSV), dynamically linked, stripped
... but it gives errors when using for example Busybox system commands like echo, etc.; this is the Busybox version:Code: [Auswählen]
# file /bin/busybox
/bin/busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.1.1, BuildID[sha1]=77fd9f8a8a41b7511e636baa7842fd441a392944, stripped
The armsysvhf version of the library, instead, doesn't work with TVHeadend because it doesn't find /dev and it's the following:
Code: [Auswählen]
# file libmediaclient.so
libmediaclient.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, stripped
I'm pretty confused about this situation, because I though that EABI5 version 1 should work everywhere but this is not the case. Maybe the difference is the tag GNU/Linux instead of SYSV? I don't know...
I'll try to use LD_PRELOAD directly on the Linux loader instruction, instead of exporting the environment variable (which then applies also to other Busybox commands) to avoid the errors, but it's really a behaviour that I would like to understand. And Google doesn't seem to be my friend this time