Log2 en C sous linux

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Salut
    Pour compiler avec la bibliothèque math.h, il ne faut pas oublier -lm (L minuscule).
    Voilà, tu peux retourner dormir ;)
    Cdt
    1. 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'
  2. Contributeur
    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. 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
  3. Contributeur
    man gcc dit : -std=c99, avec un 'c' minuscule.
    man est ton ami man
    1. Contributeur
      Bien vu ;)