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 :

Mélanger des versions de gcc


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Mélanger des versions de gcc
    Hello,

    Je développe une lib qui elle-même fait appel à deux libs externes, qui sont bien évidemment compilées avec des versions différentes de gcc.

    Est-ce gênant ? Avec quelle devrais-je compiler ?

    Merci.

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Bonjour,

    Si tu mélanges des versions de GCC, tu commences à mélanger des versions du runtime (en gros, la libc/STL/..., quand c'(est compilé), et c'est source de problèmes, parfois assez gênants, et assez durs à retrouver. Donc, tant que c'est possible, n'utilise qu'un seul et unique compilateur par app, sinon... Je plaide non coupable quand tu auras jeté ton PC par la fenêtre.

    Niveau solution, il ne reste que la recompilation de toutes les libs...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Ce n'est pas vraiment une solution, puisque je suis tenu par les c* par les les développeurs des bibliothèques externes...

    Je crois qu'il en reste que le PC balancé par la fenêtre.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    On peut mélanger (en partie) les runtimes, mais c'est effectivement une pente assez glissante...

    La seule solution (presque) fiable consiste à écrire une librairie d'encapsulation / isolation complète de l'une ou l'autre librairie (idéalement, les deux, vus qu'ils semblent peu réactifs). Cette encapsulation devra exposer une interface abstraite de TOUS les éléments issus de la CLib et/ou de la STL, et implémenter les fonctions d'allocation / libération pour TOUS les éléments dynamiques.

    En clair, cela veut dire par exemple :
    • Ces librairies d'encapsulation devront être au format SO / DLL.
    • Pour une fonction renvoyant un std::string, par exemple, tu exposeras un char* (et sa longueur) au niveau des fonctions.
      Tu fourniras dans un .H séparé une macro / template pour le "recomposer" en un std::string valide au niveau de l'application. Interdiction de le faire dans un code compilé dans la librairie d'abstraction.
      Ce principe est valable pour TOUS les containers STL.
    • L'application ne devra soit JAMAIS allouer les données ni les libérer, soit TOUJOURS les allouer ET les libérer. Aucun "mix" ne doit être fait, car le "free / delete" d'une version de GCC n'est pas forcément binairement compatible avec le "malloc / new" d'une autre version.
    • Tu devras passer par un format "portable" pour tout ce qui n'est pas directement issu de la plate-forme sur laquelle tu travailles.
    Alors OK, c'est faisable... Ceci étant dit, c'est une usine à gaz.

    Après, faudrait savoir ce que font ces librairies. Car tu peux peut-être déjouer tout ça si elles peuvent tourner dans d'autres processus, que tu pourrais interconnecter avec ton programme au travers d'une librairie comme ICE qui t'aidera à abstraire les éléments non-portables.
    Si tu dois absolument les avoir DANS ton processus, c'est mal barré sans passer par des librairies d'abstraction / isolation comme je te les ai décrites ci-dessus.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/05/2011, 09h28
  2. Gestion des versions travail en équipe
    Par yanis97 dans le forum WinDev
    Réponses: 1
    Dernier message: 05/10/2004, 21h18
  3. Regle de nommage des versions
    Par Jay dans le forum Windows
    Réponses: 5
    Dernier message: 24/11/2003, 09h26

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