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 :

Gcc linkage 32bits impossible


Sujet :

C++

  1. #1
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut Gcc linkage 32bits impossible
    Bonjour,

    Je compile sur opensuze 10.2 64 bits une application avec l'option 'm32' avec GNU gcc.
    La compilation se passe bien mais au moment du 'ld' j'ai une erreur sur l'option '-lSM' m'indiquant que /usr/lib64/libSM.so' n'était pas compatible. J'ai pourtant précisé au linkeur aussi l'option 'm32'. Cette erreur arrive aussi avec les autres .so tel que -lm ...
    J'ai une des versions de ces lib 32bits de cela dans le répertoire /usr/lib. Pour preuve si je compile la même application sur une autre machine 32bits, elle fonction correctement sur ma suze 64bits et pointe bien sur les so 32bits présentes dans '/usr/lib'.

    J'ai fait exactement la même manip sur une ubuntu 64bits et les 2 versions, 64 & 32bits se compilent et se linkent correctement.

    Merci de votre aide éclairée

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par uriotcea Voir le message
    Bonjour,

    J'ai une des versions de ces lib 32bits de cela dans le répertoire /usr/lib. Pour preuve si je compile la même application sur une autre machine 32bits, elle fonction correctement sur ma suze 64bits et pointe bien sur les so 32bits présentes dans '/usr/lib'.
    Ouh lala... méfie toi de ce genre de raisonnement...

    Il est normal que tu trouve une version 32 bits des différentes bibliothèques dont tu dispose sur une machine 32 bits, surtout si on parle de bibliothèques partagées. Autrement, ton système ne pourrait jamais fonctionner correctement.

    Par contre, quand tu es sur un système 64 bits, tu ne dispose des bibliohèques 32bits que si elles apparaissent dans le dossier lib32, les dossiers lib et lib64 récupérant tous les deux les versions 64 bits des bibliothèques.

    Commence donc par vérifier que tu as bien la bibliothèque dont tu as besoin dans le dossier lib32. Si ce n'est pas le cas, essayer d'installer la version 32 bits de la bibliothèque en question avec ton gestionnaire de paquets et, si ta distribution ne propose pas cette version 32 bits, tu devras envisager, en dernier recours, de compiler cette bibliothèque en version 32bits par toi même
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Ok merci de votre réponse, cependant comment la version du même code compilé en 32bits sur un autre linux purement 32bits pourrait fonctionner sur cette machine 64bits si les libs 32 n'étaient pas présentes?

  4. #4
    Membre chevronné Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Points : 2 160
    Points
    2 160
    Par défaut
    Si c'est compilé en static par exemple.
    Je te conseille de faire une version 32 bits sur du 32 bits et une version 64 bits sur du 64 bits, c'est plus simple et plus propre comme ça

  5. #5
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Ce n'est pas compilé en static, sinon je n'aurais pas de problème de lien avec les fichiers so

Discussions similaires

  1. gcc, .o et linkage
    Par Mercenary Developer dans le forum GCC
    Réponses: 2
    Dernier message: 31/05/2010, 11h52
  2. Réponses: 1
    Dernier message: 10/06/2008, 09h22
  3. [LINKAGE] Impossible de linker ma bibliotheque
    Par pyrho dans le forum Visual C++
    Réponses: 4
    Dernier message: 23/10/2007, 16h42
  4. Réponses: 4
    Dernier message: 16/10/2006, 07h31
  5. Réponses: 5
    Dernier message: 04/03/2006, 15h42

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