question théorique sur l'édition de lien pour stdio.h
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

question théorique sur l'édition de lien pour stdio.h



  1. #1
    cosmoff

    question théorique sur l'édition de lien pour stdio.h


    ------

    bonjour,
    voici un programme tout bete :
    Code:
    #include <stdio.h>
    int main(){
    printf("hello world");
    return 0;
    }
    quand je compile mon programme, il y a une étape édition de lien. Cette étape prend le fichier objet ou on trouve les fonctions printf et scanf et regroupe tout ca avec mon fichier main.o en un fichier exécutable c'est bien ca ? ou il trouve mon fichier objet pour les fonctions printf et scanf car dans le répertoire ou je met mes fichier .o je n'ai pas placé mon fichier objet pour scanf et printf

    merci pour vos éclaircissement

    -----

  2. #2
    pm42

    Re : question théorique sur l'édition de lien pour stdio.h

    Le fichier qui contient scanf et printf est souvent appelé libc.a. Il est quelque part dans la distribution du compilateur, ce n'est pas à toi de l'indiquer explicitement, cette librairie étant standard.

  3. #3
    CM63

    Re : question théorique sur l'édition de lien pour stdio.h

    Bonjour,

    Et le nom libc.a doit apparaître dans ta commande d'édition de lien.

    A plus

  4. #4
    CM63

    Re : question théorique sur l'édition de lien pour stdio.h

    Bonjour,

    Ta commande d'édition de liens doit resembler à ça:

    Code:
    CC Programme_bete.o Programme_bete -llibc
    Et c'est le -llibc qui va aller chercher libc.a

    Auparavant tu auras fait une compilation de Programme_bete.c :

    Code:
    CC -c Programme_bete.c
    L'option -c dit de ne faire que la compilation (création du .o) et de ne pas faire l'édition de lien. Ceci afin de corriger les erreurs qui apparaissent dès la compilation.

    A plus

  5. A voir en vidéo sur Futura
  6. #5
    lou_ibmix_xi

    Re : question théorique sur l'édition de lien pour stdio.h

    Deux petites remarques:
    - la bibliothèque standard C est incluse par défaut, il n'est pas nécessaire de la préciser au moment de l'édition de lien, si mes souvenirs sont bon il y a même une option pour ne pas lier avec la bibliothèque standard
    - un système classique utilise des bibliothèques dynamiques. Lors de l'édition de lien statique (utilisation .a), le code objet correspondant est copié dans le code objet de l'exécutable, et les fonctions utilisées de la bibliothèque par l'application seront copiées en RAM à chaque fois qu'un programme (ou une instance d'un programme) est exécuté. Lors de l'édition de lien dynamique, seul un "pointeur vers fonction de la bibliothèque" est copié dans le code de l'exécutable, ainsi les fonctions utilisées ne seront copiées en RAM qu'une seule fois, et tous les programmes utilisant ces même fonctions y accéderont par leurs même image mémoire.

  7. #6
    pm42

    Re : question théorique sur l'édition de lien pour stdio.h

    Citation Envoyé par CM63 Voir le message
    Ta commande d'édition de liens doit resembler à ça:

    Code:
    CC Programme_bete.o Programme_bete -llibc
    Comme cela a été dit, c'est inclus par défaut et si on veut le préciser explicitement, on met -lc, pas -llibc.

Discussions similaires

  1. Simple question théorique pour mon oral de BAC
    Par HEISENBERG.PN dans le forum Électronique
    Réponses: 1
    Dernier message: 19/04/2012, 00h39
  2. question théorique pour Mr Legault ou disons des opticiens!
    Par invite29c32fc6 dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 8
    Dernier message: 12/01/2010, 15h50
  3. Question théorique sur pH
    Par invite183548bc dans le forum Chimie
    Réponses: 1
    Dernier message: 01/05/2008, 01h45