Duplication possible:
Problème d’utilisation de pow () dans C
Quelle est la référence indéfinie à «pow»?
J’ai un petit problème avec un simple cours pour uni qui me laisse perplexe.
Essentiellement, je dois écrire un programme qui, entre autres choses, calcule le volume d’une sphère à partir d’un rayon donné. Je pensais utiliser la fonction pow()
plutôt que d’utiliser simplement r*r*r
, pour des points Brownie supplémentaires, mais le compilateur continue à me donner l’erreur suivante:
référence indéfinie à ‘pow’ collect2: erreur: ld a renvoyé 1 état de sortie
- Obtenir le «diff» entre deux tableaux en C #?
- Comment puis-je déterminer si un fichier est binary ou texte en c #?
- Comment déclencher un avertissement si la valeur de retour n’est pas prise en compte?
- Mon pointeur de caractère pointe sur une valeur non valide après avoir été lancé depuis int *
- Obtenir la sum de deux colonnes dans une requête LINQ
Mon code ressemble à ceci:
#include #define PI 3.14159265 //defines the value of PI /* Declare the functions */ double volumeFromRadius(double radius); /* Calculate the volume of a sphere from a given radius */ double volumeFromRadius(double radius) { return (4.0/3.0) * PI * pow(radius,3.0f); }
et je comstack avec la commande gcc -o sphere sphere.c
Cela comstack et tourne bien dans le code :: blocks sur les machines Windows à uni, mais sur mon Fedora 17 à la maison, le compilateur de ligne de commande refuse de s’exécuter. Toutes les pensées seraient appréciées avec reconnaissance!
Bénédictions, Ian
Vous devez créer un lien avec la bibliothèque de mathématiques:
gcc -o sphere sphere.c -lm
L’erreur que vous voyez: error: ld returned 1 exit status
de l’éditeur de liens ld
(partie de gcc qui combine les fichiers objects) car il ne peut pas trouver où la fonction pow
est définie.
Y compris math.h
apporte la déclaration des différentes fonctions et non leur définition. Le def est présent dans la bibliothèque mathématique libm.a
Vous devez lier votre programme avec cette bibliothèque pour que les appels aux fonctions comme pow () soient résolus.