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

C++ Discussion :

Erreur au linkage de la zlib en static


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut Erreur au linkage de la zlib en static
    Bonjour,

    Je voudrais inclure la librairie zlib à un projet c++. Je compile avec g++ sous linux. J'ai rajouté le flag -lz pour la compilation.

    En dynamique, j'arrive à compiler et à exécuter sans problème mon programme.

    Cependant lorsque je veux compiler en static (-static), j'ai des erreurs au link (des références indéfinies vers gzopen, gzclose, etc... et toutes les autres fonctions de la zlib).

    Le zlib.a est pourtant bien présent dans mon répertoire /lib/.

    Y a t-il quelque chose de particulier à faire pour linker en static la zlib ?

    Merci

    Flo.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si tu lies avec la commande "-lz", alors il cherchera le fichier "libz.a", pas "zlib.a"

  3. #3
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Merci pour la réponse.

    J'ai vérifié et j'ai bien la libz.a (de toute façon je ne pourrais pas compiler en dynamique sans elle ... fallait bien que je l'ai).

    Je maîtrise pas bien la hiérarchie des répertoires sous linux.

    Donc j'ai plusieurs répertoires lib :

    - /lib/ dans lequel sont absents les *.a ainsi que tout ce qui se rapporte à libz*.*
    - /usr/lib/ dans lequel se trouvent la libz.a ainsi que plein d'autres libz*.*

    Faut-il que je rajoute les libz*.* dans /lib/ ?

    Par ailleurs, est-ce bien seulement de libz.a dont j'ai besoin ou également des libz.so (dont je ne connais pas l'utilité) ?

    Sinon, comment spécifier dans ma ligne de commande un répertoire spécifique pour qu'il aille me chercher la libz.a dans /usr/lib/ ?

    Merci ...

    Flo.

    Edit : faut bien que je fasse un include de zlib.h ? parce que du coup si c'est libz.a que je doit linker peut-être faudrait plutot faire un include d'un éventuel libz.h, non ?

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    les libz.so sont les bibliothèques dynamiques de zlib
    Est-il possible de visualiser zlib.a pour voir si les fonctions manquantes sont dedans ?

  5. #5
    Membre chevronné Avatar de Flo.
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Par défaut
    Ah ok,

    il se pourrait donc que ces fonctions soient contenues dans le *.so (d'ou la compilation sans problème en dynamique) mais absentes de *.a (d'ou l'erreur au linkage) ...

    J'ai accès au libz.a (et non zlib.a Miles, non ?) ...

    J'ai donc fait un "vi /usr/lib/libz.a" et mes noms de fonctions apparaissent clairement gzopen, gzclose, compress, etc ...

    Donc elles y sont bien apparemment.

    Je me demande si c'est pas plutot que g++ ne va pas chercher là ou il faut, non ? Et qu'il faudrait lui préciser le chemin à /usr/lib/ ... mais je ne sais pas modifier ma commande de compilation pour le faire : j'ai tenté un -L/usr/lib/ ... mais j'ai toujours une erreur de link.

    Flo.

  6. #6
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    libz.a fait référence au libz.so, c'est pour l'édition dynamique. Comme le dit Loulou, si zlib a créé une bibliothèque statique, c'est juste un .a. Dans ce .a, il doit y avoir ces fonctions, sans quoi il y a un problème d'édition des liens.
    Quels sont les fichiers générés par zlib pour la version dynamique ?
    Quels sont les fichiers générés pour la version statique ?

    J'ai ici une version dynamique installée par défaut et il y a les fichiers libz.a et libz.o

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 07/04/2010, 16h02
  2. Erreur au linkage
    Par Celelibi dans le forum Linux
    Réponses: 3
    Dernier message: 04/05/2006, 23h59
  3. Erreur de linkage d'une Dll
    Par Hokagge dans le forum MFC
    Réponses: 1
    Dernier message: 30/03/2006, 14h48
  4. Erreur de Linkage GMP
    Par youbyoub dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 05/03/2006, 13h31
  5. Membres statiques d'une classe et erreur de linkage
    Par Neilos dans le forum C++Builder
    Réponses: 10
    Dernier message: 09/02/2006, 23h06

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