“Référence indéfinie à` pow ‘”même avec math.h et le lien de la bibliothèque -lm

J’utilise math.h et l’option -lm pour comstackr. J’ai essayé tous les:

 gcc -o ssf ssf_tb.c ssf.c -lm gcc -o ssf ssf_tb.c -lm ssf.c gcc -o -lm ssf -lm ssf_tb.c ssf.c 

mais l’erreur:

 undefined reference to 'pow' 

se produit dans tous les cas.

Mettez le -lm à la fin de la ligne.

gcc traite les arguments spécifiant des entrées dans le programme final dans l’ordre dans lequel ils apparaissent sur la ligne de commande. L’argument -lm est transmis à l’éditeur de liens et l’argument ssf.c , par exemple, est compilé et le fichier d’object résultant est transmis à l’éditeur de liens.

L’éditeur de liens traite également les entrées dans l’ordre. Lorsqu’elle voit une bibliothèque, comme l’indique -lm , elle -lm si cette bibliothèque fournit des symboles dont l’éditeur de liens a actuellement besoin . Si tel est le cas, il copie les modules avec ces symboles de la bibliothèque et les intègre au programme. Lorsque l’éditeur de liens voit un module object, il construit ce module object dans le programme. Après avoir introduit un module object dans le programme, l’éditeur de liens ne revient pas en arrière et vérifie s’il a besoin de quelque chose des bibliothèques précédentes.

Comme vous avez d’abord répertorié la bibliothèque, l’éditeur de liens n’a rien vu de ce dont il avait besoin de la bibliothèque. Si vous listez d’abord le module object, l’éditeur de liens amènera le module object dans le programme. Pour ce faire, l’éditeur de liens fera une liste de tous les symboles non définis dont l’object a besoin. Ensuite, lorsque l’éditeur de liens verra la bibliothèque, elle verra que la bibliothèque fournit des définitions pour ces symboles et les intégrera dans le programme.