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 :

MSVC2005 : Compilation d'un .lib donne 1Go


Sujet :

C++

  1. #21
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par JolyLoic Voir le message
    Il n'a pas forcément inliné quoi que ce soit. Cette option à pour objectif de permettre d'iniliner au moment où l'on créera le programme final. Au moment où la bibliothèque est créée, on ne sait pas encore quelle fonction sera inlinée ou pas à terme. Donc, on met dedans plein d'information pour permettre cet inlining au cas où. Schématiquement, on met tout le code source dans le .lib.

    Que le résultat fasse 1Go me semble beaucoup.
    Si la lib contient en gros le code source, je trouve cela bizarre car je doute qu'il y ait 1 Go de sources... Même s'il y a 100 Mo de source (je pense être très généreux), ça fait 10 fois plus.
    Et en ce qui concerne les templates, comme le code est généré à l'instanciation, je me demande si ce ne serait pas à ce moment là que le code est inliné (et éventuellement dupliqué).

  2. #22
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Dans ce fichier, il y a tout ce qui est nécessaire pour effectuer l'édition des liens... avec un exécutable ou une bibliothèque dynamique. Dans une bibliothèque statique, il n'y a en réalité aucune édition des liens d'effectuée.
    Je suis d'accord avec toi et je ne crois pas avoir dit le contraire. Ce que je veux dire, c'est que c'est tout de même le linker qui se charge de construire la lib et que je pense qu'à ce moment, le compilateur a peut-être déjà inliné les fonctions présentes dans les headers et marquées inline, ainsi que les templates (compilés et éventuellement inlinés).

  3. #23
    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 : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Citation Envoyé par stephl Voir le message
    Je suis d'accord avec toi et je ne crois pas avoir dit le contraire. Ce que je veux dire, c'est que c'est tout de même le linker qui se charge de construire la lib et que je pense qu'à ce moment, le compilateur a peut-être déjà inliné les fonctions présentes dans les headers et marquées inline, ainsi que les templates (compilés et éventuellement inlinés).
    Effectivement, tu n'as pas dit le contraire Si ça se trouve toutes les possibilités ont été générées par le compilateur et c'est l'éditeur des liens qui va, à la fin, choisir les meilleures solutions (potentiellement basées sur un profil), comme tu le dis.
    Je pense aussi que pour une bibliothèque statique, avec les inconvénients qu'elle présente de manière générale, il vaut mieux ne pas prendre cette option. Les autres compilateurs ne peuvent pas tirer partie de ces données complémentaires.

  4. #24
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Effectivement, tu n'as pas dit le contraire Si ça se trouve toutes les possibilités ont été générées par le compilateur et c'est l'éditeur des liens qui va, à la fin, choisir les meilleures solutions (potentiellement basées sur un profil), comme tu le dis.
    Probablement. De toute façon, je ne m'y connais pas assez dans ce domaine pour m'avancer davantage. Je suis d'accord avec ton explication.
    Citation Envoyé par Matthieu Brucher Voir le message
    Je pense aussi que pour une bibliothèque statique, avec les inconvénients qu'elle présente de manière générale, il vaut mieux ne pas prendre cette option. Les autres compilateurs ne peuvent pas tirer partie de ces données complémentaires.
    J'ai effectivement lu cela. Et même sans prendre en compte cette option, le code généré par un compilateur C++ (que ce soit un obj, une lib ou une dll) peut poser des problèmes si utilisé avec un compilateur/linker différent ou même avec le même compilateur et des options de compilation différentes. Ces incompatibilités peuvent être dues au name mangling, au layout des classes en mémoire, à la gestion des exceptions et j'en passe...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Compiler une base de données
    Par ramanov dans le forum Bases de données
    Réponses: 1
    Dernier message: 13/02/2008, 22h57
  2. Compilation WLANAPI (msxml6.lib)
    Par BVCDX dans le forum Windows
    Réponses: 2
    Dernier message: 12/04/2007, 19h29
  3. Réponses: 6
    Dernier message: 28/03/2007, 20h40
  4. Compilation avec une lib partagée
    Par GLDavid dans le forum Linux
    Réponses: 3
    Dernier message: 26/07/2006, 16h13
  5. [Tomcat]Compiler avec les libs
    Par javaSudOuest dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/09/2005, 21h21

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