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 :

Lier une lib avec GCC?


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut Lier une lib avec GCC?
    Je compile une bibliothèque en librairie static windows (.lib) avec le compilateur Intel (ICL) compatible avec Visual.
    Cette librairie contient des fonctions avec interface C (extern "C").

    Etant donné que la librairie est nettement plus rapide une fois compilée avec ICL qu'avec GCC, je me dis que ça serait bien de faire l'édition de lien de cette lib pour un programme compilé avec GCC.
    Mais GCC compile les bibliothèque dans un fichier.a

    Je sais qu'il n'est pas possible de lier des fonction C++.
    Est-ce quand-même possible pour les fonctions C avec un GCC sous Cygwin ou Linux?

    J'espère mais je ne me fais pas trop d'illusions...

  2. #2
    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
    Indique lui la bibliothèque en inscrivant son nom complet au lieu du traditionnel -lquelquechose
    Maintenant, ce n'est pas sûr que cela marche à cause du format des fichiers compilés qui est différent entre GCC et d'autres compilateurs

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Je sais qu'il n'est pas possible de lier des fonction C++.
    !!!???
    Tu veux dire que le extern "C" empêche ça ?

  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
    GCC et ICL ne décorent pas les fonctions de la même manière, donc pas de fonctions C++ partageables.

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    GCC et ICL ne décorent pas les fonctions de la même manière, donc pas de fonctions C++ partageables.
    Effectivement. J'avais fais des essais y'a un peu plus d'un an pour lier une bibliothèque (compilée avec ICL) avec Visual C++. Je n'avais alors réussi que pour des fonctions extern "C".

    Indique lui la bibliothèque en inscrivant son nom complet au lieu du traditionnel -lquelquechose
    Maintenant, ce n'est pas sûr que cela marche à cause du format des fichiers compilés qui est différent entre GCC et d'autres compilateurs
    J'aurais dû essayer avant de demander.
    Voilà, j'ai essayé de lier MABIB.LIB avec GCC sous Cygwin et ça marche pas, il fallait probablement s'y attendre.

    J'obtiens tout plein d'erreurs du genre:
    -local symbol `.lf' has no section
    -Warning: .drectve `-defaultlib:libcpmt ' unrecognized*
    -In function `blabla': undefined reference to `blablabla'

    Si quelqu'un connait une raison (ou mieux une solution), je suis preneur.

    J'ai peut-être une idée:
    Dans le passé j'avais compilé une bibliothèque C avec GCC sous Cygwin. J'avais récupéré tous les fichiers objets ".o" pour les réunir dans une librairie statique ".lib" grâce au programme xlib livré avec Visual.
    Peut-être que je pourrait faire l'inverse: récupérer les objets ".obj" et les réunir en une librairie ".a".
    Comment donc GCC procède t-il pour réunir les ".o" dans une librairie?

  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
    Non, ça ne marchera pas, c'est le problème que j'ai indiqué Le format des fichiers compilé n'est pas le même. Par exemple, GCC retourne du code ELF, pas Visual - on peut exécuter la sortie d'une compilation GCC sans faire d'édition des liens, pas avec un fichier objet de Visual -.

Discussions similaires

  1. linker avec une lib de gcc
    Par uriotcea dans le forum C++Builder
    Réponses: 7
    Dernier message: 04/04/2008, 11h19
  2. faire une lib avec BC++
    Par traiangueul dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/10/2006, 11h07
  3. Comment Integré une lib avec VS2005?
    Par ekinox17 dans le forum MFC
    Réponses: 23
    Dernier message: 13/02/2006, 08h51
  4. Réponses: 4
    Dernier message: 26/09/2005, 14h27
  5. Réponses: 5
    Dernier message: 26/05/2005, 15h40

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