Log2 en C sous linux

Résolu
hnouna2007 Messages postés 77 Statut Membre -  
fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j un problème qui m'empêche de dormir. en fait je voulais un petit programme qui calcul les logarithmes.
j'ai écris ce code mais lors de la compilation il m'affiche : attention implicite declaration of built_ in fonction log2.

voici le code que j'ai écris:
#include <math.h>
#include <stdio.h>

int main()
{
double x=5;
x=log2(x);

return 0;
}

aider moi s'il vous plait
Configuration: Windows XP
Firefox 2.0.0.16

3 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut
    Pour compiler avec la bibliothèque math.h, il ne faut pas oublier -lm (L minuscule).
    Voilà, tu peux retourner dormir ;)
    Cdt
    1
    1. hnouna2007 Messages postés 77 Statut Membre
       
      merci feddy pour ta réponse.
      en fait quand je compile directement sans -lm: il m'affiche ceci:


      attention : incompatible implicit declaration of built-in function 'log2'
      /tmp/ccWNbx2m.o: In function `main':
      log.c:(.text+0x18): undefined reference to `log2'
      collect2: ld a retourné 1 code d'état d'exécution

      et quand je compile avec -lm il m'affiche:

      attention : incompatible implicit declaration of built-in function 'log'
      0
  2. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Oui, c'est normal. La fonction log2 ne fait pas partie de la bibliothèque standard C99. Et comme par défaut gcc prend le standard C89. Il affiche un warning. Pour spécifier à gcc que tu souhaites utiliser le standard C99, utilise le flag -std=C99.
    Cdt
    1
    1. hnouna2007 Messages postés 77 Statut Membre
       
      j'ai compilé le code par: gcc programme .c -lm -std=C99
      mais le compilateur m'affiché l'erreur suivante.
      cc1: erreur: option "-std=C99" de la ligne de commande non reconnue
      0
  3. Char Snipeur Messages postés 10112 Date d'inscription   Statut Contributeur Dernière intervention   1 331
     
    man gcc dit : -std=c99, avec un 'c' minuscule.
    man est ton ami man
    1
    1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
       
      Bien vu ;)
      0