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 :

Comment un compilateur lie les librairies


Sujet :

Autres éditeurs

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut Comment un compilateur lie les librairies
    Bonjour, je voudrais savoir comment un compilateur (en fait un linker) lie une librairie à un programme.
    Plus précisement :
    - comment il trouve le bon fichier .lib dans le répertoire \bcc\lib alors qu'il n'y a pas besoin de mentionner son nom dans le makefile comme on doit le faire avec gcc ?
    - est-ce qu'il insère la totalité de la librairie dans l'executable ou est-ce qu'il ne met que les fonctions utilisées ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 217
    Par défaut
    En fait, je crois avoir un peu la réponse à toutes ces questions maintenant (et il n'y a en fait que les librairies standard qui sont inclues automatiquement).
    Mais il y a quelques chose d'autre que je voudrai bien savoir : peut-on se procurer un description (même rapide) des librairies fournies avec le compilateur bcc55?

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    juste un petit ajout par rapport à ta question intiiale :

    normalement (comme mentionné dans l'autre discussion) il faut donner les chemins d'accès. Dans certains compilateurs, des chemins par défaut sont fournis.

    Ensuite, l'inclusion de routines dépend de la manière dont c'est utilisé : si ce sont des biblothèques dynamiques (.so sur Linux/Unix, .dll sous Windows), le linker copie juste un "jmp adresse_physique_début_routine" à l'endroit de l'appel. Si ce sont des biblothèques statiques (.a), alors le code de la fonction est recopié.

    Pour répondre aux autres questions, il y a plusieurs cas de figures : si la routine utilisée n'utilise rien d'autre, globalement on n'utilise que le code cité. Si il y en a plusieurs du même module, le linker peut (en ce qui concerne les statiques) chosiir d'inclure tout le module.

    Enfin pour la recherche, en général déjà le compilateur crée une chaîne spécifique pour le début d'une routine, et d'autre part l'archiveur (le créateur de bibliothèque) crée lui-même une table des matières (mais en général des modules).

    Donc le linker cherche dans les bibliothèques spécifiées (et non pas dans toutes) les références..

Discussions similaires

  1. Comment avoir les librairies javacard sur netbeans.
    Par Djama dans le forum NetBeans
    Réponses: 0
    Dernier message: 13/05/2009, 19h21
  2. [ClassPath]Comment inclure les librairies dans un .BAT
    Par Kyti dans le forum Général Java
    Réponses: 2
    Dernier message: 26/03/2005, 08h07
  3. [C#] Comment liés les clases placé dans .cs entre elle
    Par Etienne maheu dans le forum ASP.NET
    Réponses: 13
    Dernier message: 15/04/2004, 12h05

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