IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

Créer une librairie statique (*.a) à partir d'une librairie dynamique (*.so.1) ?


Sujet :

Administration système

  1. #1
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut Créer une librairie statique (*.a) à partir d'une librairie dynamique (*.so.1) ?
    Hallo les Linuxien(e)s,

    Est-il possible de créer une librairie statique (*.a) à partir d'une librairie dynamique (*.so.1), même sans en avoir les sources ?

    Je pense que oui, logiquement, ça doit être possible, puisque la librairie dynamique contient les sections binaire que l'on voudrait voir apparaître dans la librairie statique.... mais comment faire ?

    Ou alors y at-il un moyen de lier statiquement à une librairie dynamique, tout en liant dynamiquement aux autres librairies ?

    je pause cette question pour une compilateur qui fourni une librairie dynamique non standard sur les systèmes Linux. Et malheureusement, toute les applications qu'il produit sont lié à cette librairie, et donc ne fonctionne pas sur les Linux où cette librairie n'est pas installé.

    Quel est la meilleur solution, et comment l'appliquer, entre :

    • Générer une librairie statique à partir d'un librairie dynamique, et remplacer la version dynamique par la version statique
    • Faire en sorte que la liaison vers certaines librairies dynamique soit en fait statique


    Et si on remplacer une librairie dynamique par une librairie statique, le lieur vat-il la trouver comme il trouverait la librairie dynamique ?

    Merci d'avance pour toute information
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  2. #2
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    la solution retenue généralement c'est de distribuer le .so avec l'executable
    et de jouer avec LD_LIBRARY_PATH et/ou LD_PRELOAD.

    sinon pour ta question (transformer un .so en .a), aucune idée, mais à priori rien d'impossible.
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  3. #3
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    En fait je posais la question en pensant à un contexte où ces modifications ne sont pas possibles (pas possible d'installer la librairie, et encore moins de modifier la configuration du chargeur de librairie). Mais merci quand-même pour l'info.

    Oui, je pense que ça n'a rien d'impossible, mais je ne pense pas que ce genre d'application existe, tout simplement parce que qu'elle ne serait que trop rarement utile.

    Sinon, vu l'organisation des fichiers ELF en section, et vu comment sont organisées les liaisons entre les sections, alors oui, c'est possible en théorie.
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  4. #4
    Membre chevronné
    Avatar de Anthony.Desvernois
    Homme Profil pro
    Ingénieur sécurité & risque
    Inscrit en
    Juin 2007
    Messages
    1 489
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur sécurité & risque
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 489
    Points : 2 244
    Points
    2 244
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        * Générer une librairie statique à partir d'un librairie dynamique, et remplacer la version dynamique par la version statique
        * Faire en sorte que la liaison vers certaines librairies dynamique soit en fait statique
    * ca doit etre possible, mais je ne vois pas comment
    * il faut compiler les programmes utilisant ta librairie dynamique avec la librairie statique et non pas la dynamique. Il faut donc disposer de la lib statique, des sources, et modifier le makefile/configure en consequence.
    Tu as l'option --static de gcc, ou tu peux simplement supprimers le lien vers la lib des flags de linkage et rajouter ton .a dans les objets a compiler (puisque apres tout un .a n'est rien d'autre qu'une archive contenant les .o prets a linker).
    "Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
    "Less is more" Ludwig Mies Van Der Rohe

    Risk & Security Mgmt

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  2. [XL-2007] Créer une liste en VBA à partir d'une pivottable
    Par yzf-r dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 06/02/2011, 20h29
  3. Réponses: 9
    Dernier message: 25/01/2011, 12h32
  4. Réponses: 0
    Dernier message: 28/10/2008, 12h20
  5. Créer une variable d'environnement à partir d'une liste de fichier
    Par ddams dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 23/02/2007, 20h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo