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 :

Problème de linkage libxml2


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut Problème de linkage libxml2
    Bonjour à tous,
    j'ai téléchargé le code source de libxml2 et j'ai compiler la lib en static sous linux, j'ai obtenus un fichier libxml2.a, en testant la lib sous linux l'édition de lien marche très bien,
    par contre quand j'ai copié le fichier .a sous windows l'édition des liens ne s'effectue pas. je me suis assuré que j'ai bien linké le fichier .a avec codeblocks,mais j'ai toujours des "undefined reference to...".
    J'ai essayer de compiler libxml2 sous windows(en static toujours) mais j'ai obtenu un fichier .a moins gros(1 mb) que celui compilé sous linux(4 mb) et quand je voulais utiliser la lib il me demandé de linker d'autre libs notamment les sockets zlib et plein d'autre machin de libs (ce p****in de zut de windows me rend malade :@) .
    Donc je voudrais savoir si je compile une lib en static sous un système en utilisant mingw est ce qu'on peut utilisé le fichier .a dans n'importe quel autre système, ou bien je dois recompiler le code source sur chaque sysème.
    Merci d'avance

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par manrugby Voir le message
    Bonjour à tous,
    j'ai téléchargé le code source de libxml2 et j'ai compiler la lib en static sous linux, j'ai obtenus un fichier libxml2.a, en testant la lib sous linux l'édition de lien marche très bien,
    par contre quand j'ai copié le fichier .a sous windows l'édition des liens ne s'effectue pas. je me suis assuré que j'ai bien linké le fichier .a avec codeblocks,mais j'ai toujours des "undefined reference to...".
    J'ai essayer de compiler libxml2 sous windows(en static toujours) mais j'ai obtenu un fichier .a moins gros(1 mb) que celui compilé sous linux(4 mb) et quand je voulais utiliser la lib il me demandé de linker d'autre libs notamment les sockets zlib et plein d'autre machin de libs (ce p****in de zut de windows me rend malade :@) .
    Donc je voudrais savoir si je compile une lib en static sous un système en utilisant mingw est ce qu'on peut utilisé le fichier .a dans n'importe quel autre système, ou bien je dois recompiler le code source sur chaque sysème.
    Merci d'avance
    Salut

    Ta dernière phrase montre bien que t'as tout à fait compris le pb. La compilation, qui transforme un source en code objet en le passant d'abord par l'assembleur, se base bien évidemment sur l'architecture de l'hôte. Imagine que tu compiles un truc sur un système little-endian (chiffres codés dans un sens) et que tu copies ton objet sur un système big-endian (chiffres codés dans l'autre sens), ça ne peut pas marcher.
    Donc si tu veux utiliser ta librairie libxml2 sous windows, il te faut la compiler sous windows. Et si cette librairie a besoin d'autres librairies pour fonctionner, il te faut elles aussi les compiler au préalable...

    Citation Envoyé par manrugby Voir le message
    (ce p****in de zut de windows me rend malade :@) .
    Oui, ça fait ça à beaucoup...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 119
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Je tiens à rajouter un petit point, parce que il faut savoir que cela existe.

    Il existe donc, la "cross-compilation" ou compilation croisée (?). Cette technique permet d'un système A, de compiler un programme ou bibliothèque afin qu'il soit compatible pour le système B (mais il ne le sera pas pour le système A).
    Pour cela, il faut un compilateur compatible avec le système A, mais qui connaisse les propriétés du système B. Il faudra aussi avoir toute les bibliothèques (dépendances) pour le système B.

    J'avouerai que cette technique est souvent lourde à mettre en place et que le plus simple est de juste utiliser le système hôte de destinations.

    EDIT:
    J'ai oublié de dire, mais la libxml2 n'a pas besoin d'être recompilé, il y a des binaires pour Windows.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 90
    Par défaut
    Bonjour,
    Je ne suis pas expert comme les deux personnes précédentes. J'ai déjà recompilé la libxml2 sous Windows avec C::B.
    Il est vrai que j'ai du non seulement ajouter toutes les bibliothèques tierces mais les recompiler elles-même avant de compiler la libxml2, les *.a fournis générant des erreurs du linker.

    Après il y a des binaires maintenus pour windows, ce peut être suffisant.

Discussions similaires

  1. Code::Blocks sous Linux problème de linkage
    Par Invité dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 22/03/2006, 16h54
  2. [Code::Blocks] Problème de linkage: "msvcrt.lib"
    Par skhay dans le forum Code::Blocks
    Réponses: 8
    Dernier message: 14/03/2006, 19h39
  3. Plusieurs fichiers => Problème de Linkage
    Par loic911 dans le forum C++
    Réponses: 6
    Dernier message: 01/03/2006, 00h11
  4. Problème de linkage avec la librairie DevIl
    Par Drannor dans le forum DevIL
    Réponses: 1
    Dernier message: 18/01/2006, 23h05
  5. Problème de linkage
    Par lvdnono dans le forum Windows
    Réponses: 4
    Dernier message: 15/06/2004, 12h32

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