Mammouth
Bonjour,
je m'excuse d'encombrer le forum avec quelque chose qui n'a rien à voir avec Fedora mais j'imagine qu'il y a pas mal d'amateurs de C ici et c'est le seul forum informatique que je fréquente...
Donc ma question concerne le C :
Quand j'utilise la bibliothèque math.h, il faut passer au compilateur gcc (en fait à l'éditeur de lien) l'option -lm pour lui dire de lier math.h au reste... Mais je n'ai trouvé nulle part l'explication du pourquoi ! Pourquoi en effet math.h nécessite cet redondance alors que pour toutes les autres bibliothèques (du moins celles que j'ai utiliséés) le #include suffit... ???
Merci !
zed2x
en gros :
les fichiers .h contiennent uniquement des déclarations: types, variables, macros, prototypage des fonctions, ...
un coup d'oeil si tu veux à /usr/include/math.h
sachant que qu'il y est pas mal d'includes conditionnés (IFDEF...) donc difficile à suivre
les définitions des fonctions cos(), sin(), ... qt à elles se trouvent ds les bibliothèques /usr/lib/libm.a et /lib/libm.so.<version>
utilisées respectivement lors de l'édition de liens statique ou dynamique
donc :
gcc -lX --static : indique à ld (l'éditeur de lien) de chercher les fonctions non résolues dans la biblio libX.a
gcc -lX : indique à ld de chercher les fonctions non résolues dans la biblio libX.so
Les biblios sont recherchés sous divers répertoires standard (/lib, /usr/lib, ...), plus ceux spécifiés explicitement à la commande avec l'option -L
dernière chose: la libc est incluse d'office dons pas besoin de passer -lc à la commande pour les fonctions style printf, scanf, ...