Probleme en C avec la fonction fmod

Résolu
FrenchFigraro Messages postés 108 Date d'inscription   Statut Membre Dernière intervention   -  
 loupius -
Salut à tous

Je suis en train de développer un petit programme en C dans le cadre de mes TPs à la fac.

Le but de ce programme est d'effectuer le crible d'Eratosthène jusqu'à un entier N, entré par l'utilisateur

Vous pouvez voir le source ici ( http://tonio.berbineau.free.fr/programmes/eratosthene.c ), ainsi que, si vous le souhaitez, le source python ( http://tonio.berbineau.free.fr/programmes/eratosthene.py ) ou encore le document contenant l'algorithme utilisé ( http://tonio.berbineau.free.fr/programmes/algo_eratosthene.pdf ), histoire de comprendre comment le programme fonctionne sans se le farcir entièrement

J'ai un probleme avec la fonction fmod, qui est censée être incluse dans la bibliothèque math.h

le compilateur me renvoie le message d'erreur suivant:
/tmp/ccpnbQEh.o: In function `main':
eratosthene.c:(.text+0x10a): undefined reference to `fmod'
collect2: ld a retourné 1 code d'état d'exécution


si j'ai bien compris, la fonction fmod n'est pas définie. Pourtant, d'après le K&R, elle fait partie des bibliothèques standards, un de mes potes l'a incluse aussi sans soucis

Mes includes en en-tête du programme sont les suivants:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>


l'appel de fonction se trouve à la ligne 42 de mon programme et est formulé comme suit:
if (0 == fmod(testmultiple,premier))

Où if est (sans blague ?) l'ouverture d'une structure conditionnelle, et testmultiple et premier sont des variables exprimées en float

Je n'ai pas utilisé de fonctions et sous-programme car c'est un domaine où je ne me sens pas encore super à l'aise, mais je sais qu'il y a pas mal de zones de ce programmes qui pourraient être 'externalisées'. De plus, les sous-programmes font l'objet d'une autre U.E. et ne sont pas demandés dans ce cours-ci ;-)

Ma question est donc la suivante: Mais qu'est-ce qui cloche dans mon appel de fmod et/ou dans mes include pour que le compilateur refuse de valider mon programme ?

Pour info, ma config:
OS: GNU-Linux (Ubuntu 9.04, Noyau 2.6.28-15-generic)
Proc: Intel Celeron
Compilateur: gcc 4.3.3

Merci d'avance ! ;-)
A voir également:

1 réponse

loupius
 
Bon, le problème est classique, il y a confusion de deux notions:
- la déclarartion '#include <math.h>' permet à la première phase (la compilation) de connaître principalement les 'define' et les 'prototypes des fonctions' disponibles et ainsi d'assurer que la compilation se passe correctement,
- la déclaration de la bibliothèque 'm(ath)' qui permet de résoudre les liens lors de la deuxième phase 'l'éditions des liens'.
Il te suffit donc de préciser que la 'compilation' a besoin de cette bibliothèque.
Avec 'gcc' il te faudra donc ajouter '-lm'.
Bonne soirée.
1