Dans mon code, j'utilise abondamment la fonction sqrt. avec en en-tête math.h.
Comment se fait il que mon compilateur me renvoie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
/tmp/cceCaiXt.o: In function `minimum_local':
pdb.c:(.text+0x852): undefined reference to `sqrt'
pdb.c:(.text+0xa1d): undefined reference to `sqrt'
Mon code de départ est:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
int minimum_local(int r1, int r2)
{
  int s1, s2;
  float dist, dist2;
 
  dist = sqrt((residue[r1].x - residue[r2].x)*(residue[r1].x - residue[r2].x)+(residue[r1].y - residue[r2].y)*(residue[r1].y - residue[r2].y)+(residue[r1].z - residue[r2].z)*(residue[r1].z - residue[r2].z)); 
  for (s1 = r1-1; s1 <= r1+1; s1++)
    for (s2 = r2-1; s2 <= r2+1; s2++) {
      if (s1 == r1 && r2 == s2)
	continue;
      if (s1 < 0 || s1 >= nres || s2 < 0 || s2 >= nres)
	continue;
      if (residue[s1].chain_id != residue[r1].chain_id 
	  || residue[s2].chain_id != residue[r2].chain_id)
	continue;
      dist2 = sqrt((residue[s1].x - residue[s2].x)*(residue[s1].x - residue[s2].x) + (residue[s1].y - residue[s2].y)*(residue[s1].y - residue[s2].y) + (residue[s1].z - residue[s2].z)*(residue[s1].z - residue[s2].z)); 
      if (dist2 < dist)
	return 0;
    }
  return 1;
}
Merci de votre aide.