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

Autres éditeurs Discussion :

création d'une librairie dynamique


Sujet :

Autres éditeurs

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut création d'une librairie dynamique
    Bonjour,

    Voilà mon problème: j'essaye de créer une librairie dynamique avec la commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ld -b -o libtoto.so -l:libcl.a monprog.o
    Donc comme vous le constatez, j'essaye de créer une librairie dynamique appelée libtoto.so, que je veux lier elle même avec une autre librairie libcl.a.

    Mais j'ai le message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ld: Invalid loader fixup in text space needed in output file for symbol "$0000005C" in input file: "/usr/lib/libcl.a(ftnerr.o)". Make sure it was compiled with +z/+Z.
    Le problème vient du fait que la librairie libcl.a n'est pas dynamique, donc je ne peux pas la lier comme ça.

    Est-ce que quelqu'un aurait une solution pour parrer à ce problème ?
    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    1- A priori sur HP-UX les lib dynamiques ont l'extention sl et non so (sauf sur Itanium)

    2- Ce que tu veux faire est impossible et dangereux :
    impossible car les unitées de compilation de la lib statique n'ont pas été compilé afin de pouvoir faire partie d'une lib dynamique (au moment de la compilation il faut ajouter +z ou +Z pour cela)
    Dangeureux car que se passerait-il si l'executable à laquelle se lie la lib dynamique était lié lui aussi avec cette biblitheque ? tu ne saurrais jamais si les appels vers cette lib depuis ton code sont dirigées vers la lib provenant de l'executable ou celle provenant de la lib dynamique ce qui peut etre problèmatique si les deux libs ne sont pas absolument identiques (versions differentes) ou si elle definit des globales...

    Solution 1 : ne pas mettre la lib statique dans la lib dynamique mais dans l'executable, attention a l'ordre toutefois...
    Solution 2 : faire une version dynamique de la lib statique...

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2004
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Je suis au courant que l'extension est sl sur HP-UX, mais j'avais mis so c'est ce qu'indique la majorité des docs qu'on trouve sur Internet (j'en avais conclu qu'il y avait une majorité de Solaris ?).

    Mais merci pour la remarque !


    Sinon, la création d'une librairie dynamique à partir d'une statique implique une recompilation, n'est-ce pas ?
    Comme je suis au boulot, je n'ai pas les droits de root, donc ça risque d'être bien galère, mais bon...

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2002
    Messages : 290
    Points : 325
    Points
    325
    Par défaut
    So est l'extention la plus commune, Solaris, Linux par exemple, mais aussi HP-UX pour Itanium (si si ca existe)...

    Dans ton cas la recompilation est obligatoire car l'option +z/+Z n'a pas été utilisée lors de la compilation. Par contre il est possible de faire une lib statique à partir des objets compilé avec le +z/+Z.

    A mon avis la meilleur méthode est de linker ta lib static à l'executable en utilisant l'option -u (de tete à verifier) si necessaire si tous les symboles ne sont pas utilisées par l'executable.

Discussions similaires

  1. Création d'une librairie dynamique avec gcc
    Par ba10 dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 16/12/2009, 19h20
  2. Recompiler une librairie dynamique (DLL) en statique
    Par shenron666 dans le forum C++
    Réponses: 9
    Dernier message: 07/04/2005, 19h28
  3. Compiler et créer une librairie dynamique en C
    Par fidififouille dans le forum Linux
    Réponses: 3
    Dernier message: 30/11/2004, 16h36
  4. Création d'une librairie ???
    Par Mike888 dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 10/10/2004, 12h16
  5. [Plugin] Création d'une vue dynamiquement
    Par The Bonze dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 15/06/2004, 13h23

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