wie kann ich eine Anwendung mit shared libs statisch linken

  • Hallo,


    bei manchen Anwendungen habe ich schon bei den configure-Parametern gesehen, dass es sowas wie --enable-shared und/oder --enable-static gibt.


    Wie mache ich sowas bei einer Anwendung, die nicht dafür vorgesehen ist, statisch gelinkt zu werden? Nur mal als Beispiel: tar - wenn ich ldd /bin/tar eingebe, erhalte ich:

    Code
    librt.so.1 => /lib/librt.so.1 (0x00002ab3027f0000)
            libc.so.6 => /lib/libc.so.6 (0x00002ab3028f9000)
            libpthread.so.0 => /lib/libpthread.so.0 (0x00002ab302b37000)
            /lib64/ld-linux-x86-64.so.2 (0x00002ab3026d8000)


    Wo müsste ich eingreifen, bzw. den Skalpell ansetzen, um einen fetten Monolithen zu erhalten?


    Gruß Geronimo

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!

  • Zitat

    Originally posted by geronimo
    Wo müsste ich eingreifen, bzw. den Skalpell ansetzen, um einen fetten Monolithen zu erhalten?


    Beim Compiler. Das wird naemlich waehrend der UEbersetzung festgelegt. Einmal kompiliert, ist das nicht mehr aenderbar.


    Das einzige, was Du evtl. als Workaround machen koenntest, ist die entsprechenden Libs in ein tar-Archiv packen und dann auf dem Zielsystem jeweils einspielen.


    Besser aber gleich am Source rumpfuschen! :gap

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Code
    #include <stdio.h>
    int main(int argc, char **argv)
    {
            printf("hello world\n");
            return 0;
    }


    herbsl@io:~$ gcc hello.c -o hello
    herbsl@io:~$ ls -l hello
    -rwxr-xr-x 1 herbsl herbsl 6257 8. Dez 09:03 hello
    herbsl@io:~$ ldd hello
    linux-gate.so.1 => (0xb7f31000)
    libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7dc7000)
    /lib/ld-linux.so.2 (0xb7f32000)
    herbsl@io:~$ gcc --static hello.c -o hello
    herbsl@io:~$ ls -l hello
    -rwxr-xr-x 1 herbsl herbsl 564803 8. Dez 09:03 hello
    herbsl@io:~$ ldd hello
    not a dynamic executable
    herbsl@io:~$ ./hello
    hello world

  • Zitat

    Originally posted by herbsl
    herbsl@io:~$ gcc --static hello.c -o hello


    Sach' ich doch! :unsch

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P


  • Hallo Meister,


    Deine Antwort bringt mal wieder auf den Punkt, was ich an Dir zu kritisieren habe.
    Keine Ahnung, aber mal dumm rausschwätzen - das passt so garnicht zu den Meriten aus Deiner Sig.


    Abgesehen davon, dass es falsch ist, (denn das Binden macht in Wirklichkeit der Linker, die gcc-Option wird lediglich weiter gereicht, ), enthält Dein Beitrag keine Information, die mich weiter gebracht hätte.


    Ganz anders die Antwort von herbsl.
    Kompetent und knackig - und für jeden nachvollziehbar. Das gefällt mir!


    Deshalb ein extra Dankeschön an herbsl.



    Vielleicht hältst Du das nächste Mal, wenn Du keine Ahnung hast, einfach mal Deine Finger ruhig ;)
    Ist nicht einfach - ich weiß. Ich erwische mich auch öfters dabei, dass ich jemand antworten möchte, obwohl ich keine Ahnung habe.


    Nur mal als Denkanstoß - nicht wieder Deine Kumpels zusammentrommeln, die mir dann schreiben, wie unfär ich Dich behandle ...


    Gruß Geronimo

    Ich bin verantwortlich für das, was ich schreibe, nicht für das, was Du verstehst!


  • Da faellt mir echt nix mehr ein... :schiel
    EOT

    Glotze: yaVDR (ASRock Q1900M, 4GB RAM, DD Cine S2 V6.5, ZOTAC GT630 (Rev. 2)
    Server: HP ProLiant MicroServer G8, VMware ESXi 5.5 :P

  • Hallo geronimo,


    Keine Ahnung sieht meiner Meinung nach anders aus.
    knebb hat doch eigentlich alles gesagt.


    Hast du ein schlechten Tag oder was?



    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!