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 :

Différence entre linkage externe et linkage interne


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut Différence entre linkage externe et linkage interne
    Bonjour tlm.

    Quelle est la différence entre linkage externe et linkage interne lors d'un processus de compilation ordinaire?

  2. #2
    Membre confirmé Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    je connaissais pas ces termes mais je suppose que :

    - linkage interne permet de linker toutes les fonctions que tu as écrite (si tu as plusieurs fichiers pour ton projet)
    - linkage externe permet de linker toutes les fonctions déjà écrites que tu utilise (genre les fonctions de stdio ou stdlib par ex)

    mais au fait, pourquoi cette question?

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Laughing Man Voir le message
    je connaissais pas ces termes mais je suppose que :
    Bah non. Tu sais ou tu sais pas. On joue pas aux devinettes ici.

  4. #4
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ali.ensi Voir le message
    Quelle est la différence entre linkage externe et linkage interne lors d'un processus de compilation ordinaire?
    'Linkage' est un terme anglais (lien).

    C'est un problème lié à la portée.

    Une fonction ou un objet avec lien interne n'est visible que de l'unité de compilation courante.

    C'est le cas des objets (définis hors d'un bloc) et des fonctions qualifiés 'static'.
    static int x;

    static int f(void)
    {
    }
    Une fonction ou un objet avec lien externe est visible de n'importe quelle unité de compilation, du moment que l'on fourni les déclarations nécessaires.

    C'est le cas des objets (définis hors d'un bloc) et des fonctions non qualifiés 'static'.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #include "declarations.h"
     
    int x;
     
    int f(void)
    {
    }
    avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /* declarations.h */
    extern int x;
     
    int f(void); /* ou extern int f(void); */

  5. #5
    Membre confirmé Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    bon j'ai revu mes sources et j'obtient ça (je sais pas si sa va être plus clair que ce qu'a dit Emmanuel)

    - linkage interne : ça permet de linker une librairie dans ton programme (en général une librairie statique, qui ne risque pas de changer)

    - linkage externe : en général si une librairie est partagée, on rentre dans ce cas

    Par exemple, un programme peut très bien utiliser une lib partagée qui sera sujet au linkage externe. Si jamais cette librairie peut évoluer, mais que des bugs peuvent survenir, on va choisir de faire un linkage interne. dans ce cas la lib va être directement placée au sein du programme qui ne dépendra plus de la lib paratgée (programme généré plus lourd)

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par Laughing Man Voir le message
    bon j'ai revu mes sources et j'obtient ça (je sais pas si sa va être plus clair que ce qu'a dit Emmanuel)

    - linkage interne : ça permet de linker une librairie dans ton programme (en général une librairie statique, qui ne risque pas de changer)

    - linkage externe : en général si une librairie est partagée, on rentre dans ce cas

    Par exemple, un programme peut très bien utiliser une lib partagée qui sera sujet au linkage externe. Si jamais cette librairie peut évoluer, mais que des bugs peuvent survenir, on va choisir de faire un linkage interne. dans ce cas la lib va être directement placée au sein du programme qui ne dépendra plus de la lib paratgée (programme généré plus lourd)
    Non, tu parles ici de la différence entre une bibliothèque statique (au passage: on dit bibliothèque et pas librairie) et une bibliothèque partagée (ou dynamique). Cela n'a rien à voir avec ce qu'a expliqué Emmanuel.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut
    En fait, Emmanuel, qu'es-ce que tu entends dire par "l'unité de compilation courante". Est ce que dans un même IDE, il existe plusieurs unités de compilation à la fois?!

  8. #8
    Membre confirmé Avatar de Laughing Man
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Par défaut
    ok merci de cette info thierry

  9. #9
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ali.ensi Voir le message
    En fait, Emmanuel, qu'es-ce que tu entends dire par "l'unité de compilation courante". Est ce que dans un même IDE, il existe plusieurs unités de compilation à la fois?!
    Dans un projet (rien à voir avec l'IDE) il peut y avoir n unités de compilation.

    Une unité de compilation est l'ensemble formé par un code source (.c) et tous les fichiers inclus dedans.

    C'est cet ensemble qui est traité en une 'unité' par le compilateur.

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur Informatique Senior
    Inscrit en
    Juin 2006
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Informatique Senior

    Informations forums :
    Inscription : Juin 2006
    Messages : 108
    Par défaut
    merci pour l'éclaircissement

Discussions similaires

  1. Différence entre un "bidouilleur" et un Pro ?
    Par christ_mallet dans le forum Débats sur le développement - Le Best Of
    Réponses: 290
    Dernier message: 28/11/2011, 10h53
  2. difference entre script externe ou interne
    Par bilcosby dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/01/2010, 14h17
  3. [DBA]Différence entre : SYSTEM, INTERNAL, SYSDBA
    Par Isabella dans le forum Oracle
    Réponses: 10
    Dernier message: 15/02/2006, 13h49
  4. Réponses: 5
    Dernier message: 03/05/2005, 18h22
  5. Réponses: 3
    Dernier message: 07/05/2002, 16h06

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