Forum général.général Obtenir un binaire statique à partir d'un binaire lié dynamiquement

Posté par .
Tags : aucun
0
5
juil.
2006
J'aimerais créer des vignettes de sites web avec kwebdesktop sur mon serveur, mais pour ça il me faudrais une version statique du binaire kwebdesktop. Le problème c'est que pour le compiler en statique il faut que je compile tout kdebase :/

N'y a t'il pas un moyen d'obtenir un binaire statique à partir d'un binaire lié dynamiquement ?
  • # Une idée...

    Posté par . Évalué à 3.

    Je n'ai aucune idée quand à la réussite de ce que je vais te dire mais voici ce que j'essaierai de faire en premier.

    1) Tu crés un dossier et tu lui fait deux enfants :p, disons "binary", "binary/lib" et "binary/bin".

    2) Tu lances la commande "ldd /chemin/vers/kwebdesktop".

    3) Tu copies toutes les librairies listées avec les bon noms. Par exemple si tu vois /usr/lib/libpng12.so.0, il ne faut pas se contenter de copier /usr/lib/libpng12.so car l'exécutable cherchera /usr/lib/libpng12.so.0. En clair soit tu renomme le .so, soit tu fait un lien symbolique comme c'est le cas dans les distributions.

    4) Tu copies ton exécutable kwebdesktop dans "binary/bin".

    5) Tu créé le lanceur suivant...

    #!/bin/bash
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/chemin/vers/binary/lib
    exec /chemin/vers/binary/bin/kwebdesktop

    ... que tu chmod afin de le rendre exécutable. Voila, ton programme se lance grace au lanceur... Je pense que ca devrait marcher.

    Si tu as beaucoup trop de librairies à copier (command ldd sur l'exécutable), utilise ça :

    cp `ldd /usr/bin/kalarm |cut -d " " -f 3 |tr '\n' ' '` /chemin/vers/binary/lib
    (attention aux quotes, guillemets, espaces, ...)
    • [^] # Re: Une idée...

      Posté par (page perso) . Évalué à 2.

      Si ça peut t'aider, j'ai écrit un petit bout de perl pr copier récursivement les dépendances d'un ou plusieurs binaires (car copier les libs apparaissant dans la sortie de ldd ne suffit pas, il faut aussi copier les libs dont dépendent les libs).
      Envoie un message privé si t'es intéressé.
    • [^] # Re: Une idée...

      Posté par . Évalué à 1.

      Merci :)
      J'ai eu un sympatique relocation error: /opt/kwebdesktop/lib/libpthread.so.0: symbol _rtld_global_ro, version GLIBC_PRIVATE not defined in file ld-linux.so.2 with link time reference, mais en copiant aussi /lib/ld-linux.so.2 et en lançant de cette façon ça marche: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/kwebdesktop/lib lib/ld-linux.so.2 bin/kwebdesktop

      Par contre kwebdesktop a besoin d'un serveur X :/
      • [^] # Re: Une idée...

        Posté par (page perso) . Évalué à 3.

        Pour le reste je ne sais pas (la fleme de lire en fait) mais pour X tu peux toujours essayer juste avec xvfb.
  • # statifier

    Posté par (page perso) . Évalué à 5.

    http://statifier.sourceforge.net/
    Il y en a au moins un autre mais je ne me rappelle plus de son nom.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: statifier

      Posté par . Évalué à 1.

      Merci, c'est exactement ce que je cherchais :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.