Freetz-NG nutzen, um Binaries auf der originalen Firmware laufen zu lassen -> geht nicht? #189
-
Hallo Freetz-NG-User! Als ehemaliger Freetz-Nutzer habe ich über einen langen Zeitraum Binaries von freetz bauen lassen, um diese dann auf meiner 7490 mit der originalen Firmware laufen zu lassen. Das hat auch bis zur Firmware 7.11 (nach Nutzung von modfs) tadellos funktioniert. Weil freetz aber scheinbar noch nicht für die Firmware 7.21 angepasst wurde, hab ich nun Probleme damit bekommen. Oder liegt es vielleicht einfach nur an der 7.21er Firmware? Ich konnte es noch nicht herausfinden, deswegen hoffe ich, dass es hier jemanden gibt, der schon damit Erfahrung sammeln durfte. Führe ich ein Binary, das mit Freetz-NG gebaut wurde, auf meiner Box aus, dann erscheint immer immer nur´ file gibt folgendes aus: Das obige strace ist laut objdump nur von der libc abhängig, die ich dem Binary auch zur Verfügung stelle. Aber irgendwas ist hier falsch. Kann mir jemand helfen? Ich danke Euch! Viele Grüße, EDIT by @fda77: EDIT by @SvenLuebke: Mein Fazit: Die Verwendung von dynamisch gelinkten Binaries ist weiterhin ohne Probleme möglich, so lange sämtliche Libs für das System auffindbar sind. Für die einfachere Ausführung sollte man den Parameter FREETZ_RPATH benutzen, da man dadurch nicht LD_LIBRARY_PATH verändern muss. |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 14 replies
-
Darfst du Dateien dort ausführen wo du sie ausführst? AVM nutzt als libc: glibc, uclibc und musl. Je verschiedene Versionen und auf verschiedenen Architekturen, evtl verschiedene Endianess. |
Beta Was this translation helpful? Give feedback.
-
Oder man linkt seine Binaries einfach statisch (nicht alle (Freetz[-NG]-Pakete unterstützen das und man muß manchmal selbst Hand anlegen und die Autokonfiguration überlisten) - dann ist es egal, in welcher Reihenfolge da nach welchen Paketen gesucht wird. Ich würde jedenfalls für vidar:/home/GitHub/yf_bin/target $ find . -type f -exec file '{}' \; | grep dynamic
./armv7l/4.4.60/privatekeypassword: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./armv7l/4.4.60/ldd: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./armv7l/4.4.60/libprivatekeypassword.so: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, stripped
./mips/3.10.107/privatekeypassword: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./mips/3.10.107/ldd: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./mips/3.10.107/libprivatekeypassword.so: ELF 32-bit MSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, stripped
./mips/2.6.28.10/privatekeypassword: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./mips/2.6.28.10/ldd: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./mips/2.6.28.10/libprivatekeypassword.so: ELF 32-bit MSB shared object, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, stripped
./i686/2.6.39.3/privatekeypassword: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./i686/2.6.39.3/ldd: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, stripped
./i686/2.6.39.3/libprivatekeypassword.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, stripped
vidar:/home/GitHub/yf_bin/target $ Dein Ich habe solche "static"-Patches für einige Pakete auch in meinem Fork, weil ich längst nicht bei allen meinen Vorstellungen, was man noch bräuchte, um die erzeugten Dateien auch ohne Freetz "nachnutzen" zu können, bei den Freetz-Maintainern (Freetz/freetz) Gehör gefunden habe - der Dadurch, daß die Programme in Ich habe mit @fda77 irgendwo hier im GitHub auch schon darüber diskutiert (vielleicht findet es ja jemand), wie man das wieder einfangen kann bzw. was ich selbst in Zukunft machen will - ich werde nur noch neue Programme in Binärform erzeugen und bereitstellen, die statisch gegen |
Beta Was this translation helpful? Give feedback.
-
Und diese statischen Binaries laufen dann auf unmodifizierten 7490(uclibc) UND 7590(musl)? Mindestens der Name der Loader-/Interpreter-Datei ist doch ein anderer:
Sicher dass strace einen static-Patch braucht?
Wenn man (bzw ein Addon) die Pfade durcheinander bringt werden solche Segfaults verursacht: ip-phone-forum.de/threads/e-mail-versand-mit-cron.309220/ |
Beta Was this translation helpful? Give feedback.
-
Es gibt noch eine weitere Alternative ... vor ein paar Jahren wurde (schon im Freetz-Trunk) die Angabe von Auch damit kann man natürlich schon bei der Übersetzung dafür sorgen, daß andere Pfade bei der Suche nach Bibliotheken verwendet werden - wenn man die Pfade schon vorher kennt. So etwas macht sich allerdings bei USB-Volumes tatsächlich schlecht(er), weil dort der Pfad ja von mehreren Faktoren abhängig ist. Ich verwende für die fertigen Binaries in Es ist um einiges leichter und flexibler, einfach einen passenden Symlink von |
Beta Was this translation helpful? Give feedback.
-
Nochmals vielen Dank an Euch! Trotz meiner Probleme bin ich mit dem Endergebnis glücklicher als vorher, da ich den Parameter |
Beta Was this translation helpful? Give feedback.
Nochmals vielen Dank an Euch!
Trotz meiner Probleme bin ich mit dem Endergebnis glücklicher als vorher, da ich den Parameter
FREETZ_RPATH="/var/media/ftp/usr/lib"
nun nutze und scheinbar alle Binaries direkt (ohne das Setzen von LD_LIBRARY_PATH) ausführen kann.