Pages : 1
#1 Le 08/05/2015, à 13:54
- Beddali
Commande ld
Je n'arrive pas à trouver pourquoi la commande ld ne reconnaît pas printf et scanf malgré #include <stdio.h>.
Hors ligne
#2 Le 08/05/2015, à 14:33
- credenhill
Re : Commande ld
hello
essayer avec -lc
ou utiliser cc
Hors ligne
#3 Le 08/05/2015, à 14:48
- Beddali
Re : Commande ld
Je sais faire avec cc, je vais essayer avec -lc. Mais cela ne répond pas à ma question.
Hors ligne
#4 Le 08/05/2015, à 15:39
- credenhill
Re : Commande ld
les .h n sont pas résolus par ld mais par le préprocesseur
printf et scanf sont dans libc
Hors ligne
#5 Le 08/05/2015, à 15:54
- Beddali
Re : Commande ld
Merci Credenhill; mais excuses moi d'insister, je pensais que les .h étaient déjà résolus AVANT d'arriver à ld, c'est à dire juste après cc -c pour obtenir les .o permettant ainsi à ld de "trouver ses billes". Me trompe je ?
Hors ligne
#6 Le 08/05/2015, à 21:03
- derderder
Re : Commande ld
les .h sont là uniquement pour définir les fonctions et pas pour définir l'emplacement des bibliotheques. Tu peux creer un .h totalement fictif avec des fonctions n'existant pas si tu compile avec gcc -c cela passera sans problems. Ou alors regrouper dans les .h dans un seul fichier cela ne changerait rien au fonctionement du linker. Tu peux même faire un Hello World sans inclure stdio.h en definissant le prototype de printf au début du fichier. Tout ça pour dire que non, le .h n'indique pas la bibliotheques a utiliser pour le linker. Et sinon, il vaut mieux utiliser gcc fichier.o fichier2.o etc.. -o programme que ld.
Hors ligne
#7 Le 09/05/2015, à 07:58
- Beddali
Re : Commande ld
Merci Derderder, c'est très clair.
Hors ligne
Pages : 1