math.h - C - Programmation
Marsh Posté le 25-04-2006 à 15:42:05
Elmoricq a écrit : Linké avec -lm ? |
euh en fait je commence tout juste le C, donc je sais pas ce que veut dire linké
Marsh Posté le 25-04-2006 à 15:48:41
ca veut dire qu'une fois que le compilateur vérifié que tout tes appels de fonctions, syntaxe et autre sont corrects, il va pointer ton appel à sqrt vers une adresse de la lib math: c'est le link;
si tu ne lui spécifie que le .h et pas de lib, il peut seulement vérifier que syntaxiquement tout est correct, mais pas faire pointer ton appel vers une bonne adresse.
Marsh Posté le 25-04-2006 à 15:51:38
(et donc -lm c'est pour linker la lib de math, voir option -l du compilateur)
Marsh Posté le 25-04-2006 à 15:56:05
c'est pour ça qu'il est important de faire la différence entre bibliothèque et fichier d'en-tête.
math.h est seulement un fichier d'en-tête (header) qui te permet de déclarer au compilateur les prototypes des fonctions. ceci est nécessaire pour la phase de compilation.
Les fonctions ne sont réellement définies que dans la bibliothèque correspondante (par ex. libm.a / .so). C'est ce fichier qui est nécessaire pour l'édition des liens.
Marsh Posté le 25-04-2006 à 15:59:50
ok
mais je ne peux pas savoir si le link est fait entre l'en tete et la bibliotheque pcq je suis sous visual c++
Je vais demander au service info de ma boite si c'est le cas
merci
Marsh Posté le 25-04-2006 à 16:02:26
skelter a écrit : je ne peux pas savoir si le link est fait entre l'en tete et la bibliotheque pcq je suis sous visual c++ |
T'as lu ce qui était écrit ?
Marsh Posté le 25-04-2006 à 16:20:46
skelter a écrit : ok |
Le link c'est au niveau de la compilation, tu dois utiliser -lm : "-l => lier une bibliothèque", "m => fichier libm" (.dll, .so, .a ou whatever, ça dépend du système et de la méthode de liage)
Marsh Posté le 26-04-2006 à 00:30:43
Ben, j'avoue que je me pose la question. Genre j'ai fini par en déduire que j'ai dû croiser skelter sur une autre cat de programmation. Ou alors il s'est fait voler son pseudo. Sinon des aliens l'ont enlevé pour faire des expériences, je sais pas.
Marsh Posté le 26-04-2006 à 09:16:08
ReplyMarsh Posté le 26-04-2006 à 10:46:47
skelter a écrit : yen a qu'on plusieurs pseudo, d'autre qui sont plusieurs derriere un speudo |
Y'en a aussi qui n'ont pas de pseudo, c'est plus clair..
Marsh Posté le 26-04-2006 à 17:14:57
lol
j'avoue qu'au début j'étais surpris, mais je me suis quand même bien fait avoir...
Marsh Posté le 26-04-2009 à 11:54:17
Bonjour,
Je fais remonter le topic à propos de ces liens genre -lm...
Je m'amuse à commencer la programmation avec des programmes tous bidons genre calculs d'une équation du second degré (delta tout ça...)
Il y a des arguments à faire passer à gcc pour toutes les bibliothèques?
Deuxième question: comment connaitre tous les arguments de gcc.
(-l ne marche pas chez moi..)
Bon appétit !
Merci d'avance.
(ceci n'est pas un fake)
Marsh Posté le 26-04-2009 à 13:01:14
-l fonctionne forcement sur gcc
Documentation : "man gcc" dans la console.
Marsh Posté le 29-04-2009 à 12:55:11
Solcarlus a écrit : Bonjour, |
Par défaut le lien est fait avec la libc.
Citation : Deuxième question: comment connaitre tous les arguments de gcc. |
En lisant la doc...Google est ton ami...
Citation : (-l ne marche pas chez moi..) |
Tout court, non, évidemment. C'est -lm ou, plus généralement -l<nom court de bibliothèque>
Montre ta ligne de commande exacte et le message d'erreur..
Marsh Posté le 29-04-2009 à 13:21:12
Bonjour,
je n'ai pas de message d'erreur. Je ne comprenais juste pas exactement à quoi correspondait -l.
Maintenant j'ai compris.
Google est mon ami oui , c'est grâce à lui que j'ai trouvé le lien vers ce topic.
Thanks.
Marsh Posté le 25-04-2006 à 15:34:13
bonjour,
je dois utiliser la fonction double sqrt(double d) de la bibliotheque math.h. Je mets donc #include <math.h> en tete de mon programme
ca compile bien mais à l'exécution ca me met en mode debug (je suis sous visual studio 6.0) CXX0017 : Error : symbol "sqrt" not found
help