rebuild-flash - stripping anpassen an externe lib

  • Hallo,


    ich möchte eine zusätzliches Programm (Eigenentwicklung) incl. Lib auf HDD installieren und später per Plugin einbinden da es zu gross ist um direkt ins Image integriert zu werden - ähnlich tuxfrodo usw.


    Soweit funktioniert eigentlich alles ganz gut, es gibt allerdings ein wesentliches Problem:
    Die mittels 'make rebuild-flash' gestrippte glibc (und ich glaub auch 1-2 andere Libs) sind zu 'stark' gestrippt, d.h. meine Lib bzw. Programm benötigen Symbole die nicht mehr in den Libs vorhanden sind.


    Wenn ich das richtig verstehe gibt es ein Skript o.ä. welches automatisch alle nicht benötigten Symbole aus den Libs entfernt, und es orientiert sich natürlich an den Programmen/Libs die ins Image installiert werden.


    Wenn ich meine Software mit ins Makefile aufnehmen würde, würde das Strippen (vermutlich) die benötigten Symbole nicht aus glibc & Co. entfernen, aber das Image wäre zu groß.


    Ich habe meine Software erfolgreich testen können indem ich die glibc usw. ebenfalls in der ungestrippten Version mit auf die HDD kopiert und LD_LIBRARY_PATH zum Starten der Software entsprechend gesetzt habe - funktioniert ohne Probleme.


    Habt ihr irgendwelche Tipps wie ich es hinbekomme die im Image installierte glibc nur soweit wie nötig zu strippen, also die Symbole zu behalten die meine SW benötigt und gleichzeitig meine Software auf HDD installieren zu können und diese vor allem ebenfalls möglichst effizient zu strippen?


    Vielen Dank!

  • Ok, das entsprechende Skript hab ich gefunden: $(flashprefix)/mklibs.py .


    Wenn ich es auf die Schnelle richtig beobachtet habe, berücksichtigt es als Parameter die Pfade der Files die ins Image integriert werden und bildet daraus einen Pool dessen Files dann gestrippt werden bzw. ermittelt daraus die notwendigen Symbols die beibehalten werden müssen.


    Hoffentlich reicht es die entsprechenden zusätzlichen Files mit anzugeben, das werde ich aber erst morgen testen ...


    Für Hinweise/Korrekturen bin ich trotzdem dankbar ;)


    Grüsse

  • Ich habe das mal versucht und zunächst meine Anwendung statisch kompiliert - damit fällt also meine zusätzliche Lib weg, läuft eh performanter und ist auch ein bischen einfacher bzgl. Makefile anpassen usw..


    Ich habe im Makefile im Abschnitt 'flash-lib' den absoluten Pfad zu meiner statisch gelinkten App an den Aufruf von 'mklibs.py' angefügt und es wird die App auch beim strippen berücksichtigt.


    Problem ist allerdings dass Fehler bzgl. 'Unresolved symbols' auftreten:

    Code
    Unresolvable symbol powf


    Dieses befindet sich offenbar normalerweise i.d. libm.so.


    Nach meinem ursprünglichen Verständnis sollte ja gerade das nicht passieren da ich erwartet hatte dass das Script die benötigten Symbols i.d. Libs beibehält.


    Allerdings scheint die libm.so auch gar nicht vom 'mklibs.py' berücksichtigt zu werden, bzw. die libm.so gar nicht als Parameter ans Script übergeben zu werden - es sind als Parameter im Makefile lediglich /(s)bin, /lib/tuxbox, und aus /lib nur 'libnss_*.so' eingetragen.


    In welcher Routine werden denn die Libs aus /lib (glibc & co.) gestrippt?


    Vielen Dank & Grüsse!

  • Also ich habe z.B. einen Ordner mit den ganzen Softcams etc unter


    Code
    /home/schaedelmeister/cvs/cvs_files_dm7000/root/cdkflash/binsforstrip


    der beim erstellen des Images in den Ordner kopiert und dann mitgestrippt werden.

    Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. <br>
    Mahatma Gandhi