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 :

Bibliothèque compatible en GCC et Clang, Mac OS X


Sujet :

C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut Bibliothèque compatible en GCC et Clang, Mac OS X
    Bonjour tout le monde!

    J'essaie de compiler une bibliothèque dynamique "compatible" entre gcc (4.8.2 fourni par Homebrew) et Clang (5.1 fourni par XCode).
    Le but est de simplement éviter de compiler et stocker deux fois la même bibliothèque.

    Je n'ai pas trouvé d'option de compilation (à part un -stdlib=libc++ à ajouter à Clang qui ne change rien).

    Est-ce faisable?

    Merci d'avance.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Avant de te prendre la tête, tu a essayé de compiler ta librairie avec gcc et de l'utiliser avec clang ou vise et versa

    Parce que lorsque je compilais OpenSSl et curl pour mes applications iPhone natives/ Objective-C, j’utilisais gcc

    Quel est ton problème?

  3. #3
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Oui oui, j'ai réussi à compiler ma lib avec gcc et clang.

    Le truc, c'est que j'aimerais une bibliothèque universelle qui puisse s'utiliser avec clang ou gcc. Le but est vraiment d'éviter de maintenir plein de version différentes.

    De plus, j'ai remarqué que le problème vient seulement au niveau de l'utilisation de std::vector (je pense que tous les conteneurs de la stl doit être pareil) dans les squelettes des méthodes.

  4. #4
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 388
    Points
    11 388
    Billets dans le blog
    11
    Par défaut
    Je ne suis pas sur du tout que LLVM (pour clang) et GCC aient le même format binaire.
    T'es-tu renseigné là-dessus ?
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  5. #5
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    C'est justement ce que je suis en train de faire. Mais rien de concluant pour le moment.

    Edit: J'ai trouvé un bout de réponse: quand j'ajoute l'option -stdlib=libstdc++ la compilation fonctionne... seulement pour des applications qui n'utilisent pas le C++11...
    J'essaye de creuser encore un peu, sinon je me débrouillerai avec CMake pour utiliser les bonnes lib

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    Je ne suis pas sur du tout que LLVM (pour clang) et GCC aient le même format binaire. T'es-tu renseigné là-dessus ?
    Sur Linux, Clang utilise la même ABI que GCC. Sur Mac OS, qui est un Unix, je pense que c'est également le cas. La particularité sur Mac OS est qu'il se peut que Clang soit livré avec l'implémentation de la STL de LLVM, qui elle est une implémentation distincte de celle de GCC (cette implémentation n'est dispo que pour Mac OS pour le moment).

    Ce que tu devrais pouvoir faire, c'est utiliser Clang mais configuré pour utiliser les mêmes headers et la même libstd que gcc. Ou l'inverse : GCC configuré pour taper sur les headers et la STL de Clang. Je pense que tu es sur la bonne piste avec l'option de tu as citée, mais peut-être que ça ne fonctionne pas pour les applis C++11 car la version sur laquelle ça linke n'est pas assez récente. Vu que Apple livre Clang par défaut à la place de GCC maintenant, il n'est pas sûr que la situation se simplifie à l'avenir.
    Find me on github

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Avril 2010
    Messages : 517
    Points : 718
    Points
    718
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Sur Linux, Clang utilise la même ABI que GCC. Sur Mac OS, qui est un Unix, je pense que c'est également le cas. La particularité sur Mac OS est qu'il se peut que Clang soit livré avec l'implémentation de la STL de LLVM, qui elle est une implémentation distincte de celle de GCC (cette implémentation n'est dispo que pour Mac OS pour le moment).
    Le problème c'est que, comme tu le soulignes, l'implémentation de la libstl de Mac est ancienne (c'est la même que celle livré avec GCC 4.3.2...). Par conséquent, je pense que je vais simplement compiler deux versions de ma lib. Si Clang gérerai OpenMP, je l'utiliserai sans problème, mais ce n'est pas encore le cas. (Peut-être cette année?)

    Merci encore pour toutes les suggestions.

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

Discussions similaires

  1. gcc et clang dans Xcode 6.1
    Par osans dans le forum GCC
    Réponses: 2
    Dernier message: 30/10/2014, 12h44
  2. Compilateur GCC vs CLANG
    Par everest31 dans le forum GCC
    Réponses: 4
    Dernier message: 11/02/2013, 16h48
  3. Réponses: 0
    Dernier message: 08/06/2010, 11h33
  4. Problème de compilation gcc & SDL sous Mac OS X
    Par geogeoint dans le forum Apple
    Réponses: 1
    Dernier message: 06/05/2009, 14h05
  5. Faire une bibliothèque compatible JavaME et JavaSE
    Par Mathieu147 dans le forum Java ME
    Réponses: 3
    Dernier message: 04/03/2009, 12h26

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