Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 08/05/2015, à 14: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, à 15:33

credenhill

Re : Commande ld

hello
essayer avec -lc
ou utiliser cc

Hors ligne

#3 Le 08/05/2015, à 15: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, à 16: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, à 16: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, à 22: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, à 08:58

Beddali

Re : Commande ld

Merci Derderder, c'est très clair.

Hors ligne