#1 Le 22/01/2010, à 20:40
- Sepu
[C] Anjuta: execution impossible du projet, probleme avec math.h
Bonjours
Après avoir compilé ma source je souhaiterai l'executer, mais j'ai une erreur qui m'indique qu'elle n'arrive pas a identifier la fonction pow()
main.c:55: undefined reference to `pow'
pourtant j'ai bien ajouter ma librairie
#include <math.h>
J'utilise Anjuta 2.28
Sous ubuntu 9.10
Merci d'avance
Dernière modification par Sepu (Le 22/01/2010, à 21:00)
Hors ligne
#2 Le 22/01/2010, à 23:46
- Khyl
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
Tu pourrais mettre un peu plus de code stp ? dis comme ça on ne peut pas t'aider
Hors ligne
#3 Le 23/01/2010, à 02:28
- Lstr
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
Rajouter "-lm" lors de la compilation gcc pour lui dire d'utiliser les mathématiques lol
gcc -lm -o nom_du_prog nom_du_prog.c
Hors ligne
#4 Le 23/01/2010, à 12:11
- Sepu
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
Alors un peu plus de code:
C'est un exercice bidon fait au cours pour m'exercer à utiliser les fonctions
// LOGA C , Canevas Ex8 2009-2010
#include <stdio.h>
#include <math.h>
// Fonction FtestA
unsigned short FtestA (int nb)
{
int i,nbstar;
unsigned short retour;
if ((nb <= 15) && (nb >=1))
{
nbstar = nb;
retour = 1;
}
if (nb > 15)
{
nbstar = 15;
retour = 2;
}
if (nb <= 0)
retour = 0;
else
{
for (i=0;i<nbstar;i++)
printf("*");
}
return retour;
}
// Fonction FtestB
double FtestB (int exp)
{
return pow(2,exp);
}
// Fonction FtestC
int fDivision(int ValCa,int ValCb)
{
int resultat;
resultat = ValCa / ValCb;
return resultat;
}
int fReste(int ValCa,int ValCb)
{
int reste;
reste = ValCa % ValCb;
return reste;
}
//MAIN
int main (void)
{
char UserAnswer;
int code;
const double Pi = 3.1415926535;
int ValA,ValB,ValCa,ValCb,Reste,division;
double resultat;
// Affichage Ex7 Nom prénom
printf("Ex7 apero \n");
do {
printf("\nTest A ou B ou C, Q pour Quitter \n");
scanf("%c%*c", &UserAnswer);
switch (UserAnswer) {
case 'A':
case 'a':
printf("Entrez un nomre entre 1 et 15 \n");
scanf("%i%*c", &ValA);
code=FtestA(ValA);
printf("\nTestA code execution = %i\n",code);
break;
case 'B':
case 'b':
printf("TestB: Entrez un exposant de -99 a 99 \n");
scanf("%i%*c", &ValB);
if ((ValB <= 99)&&(ValB >= -99))
{
resultat=FtestB(ValB);
printf("TestB: 2 a la puissance %i = %g \n",ValB,resultat);
}
if (ValB > 99)
{
ValB=99;
resultat=FtestB(ValB);
printf("TestB: 2 a la puissance %i = %g \n",ValB,resultat);
}
if (ValB < -99)
{
ValB = -99;
resultat=FtestB(ValB);
printf("TestB: 2 a la puissance %i = %g \n",ValB,resultat);
}
break;
case 'C':
case 'c':
printf("TestC: Entrez le dividende\n");
scanf("%i%*c", &ValCa);
printf("TestC: Entrez le diviseur\n");
scanf("%i%*c", &ValCb);
if (ValCb != 0)
{ division=fDivision(ValCa,ValCb);
printf("Resultat de %i / %i = %i\n",ValCa,ValCb,division);
Reste=fReste(ValCa,ValCb);
printf("Reste de %i / %i = %i\n",ValCa,ValCb,Reste);
}
else
printf("TestC: Erreur division par 0!\n");
break;
} // end switch
} while (!(UserAnswer == 'Q' || UserAnswer == 'q'));
return (0);
}
Sinon Lstr, c'est possible d'ajouter l'option -lm dans anjuta? j'ai pas envie de tout compiler et débuger à la main à chaque fois
merci
Dernière modification par Sepu (Le 23/01/2010, à 12:16)
Hors ligne
#5 Le 23/01/2010, à 12:21
- mika
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
Tu fais un makefile... Pour ton code ça suffit largement. Au pire tu modifies le configure que anjuta a du créer.
Pinard m'a tueR (in vino veritas ?)
Cherche logiciel pour tagger ses vinyles.
Hors ligne
#6 Le 23/01/2010, à 12:27
- Sepu
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
okay, je veux bien modifier mon "makefile" mais je sais pas comment ni ou le faire.
Hors ligne
#7 Le 24/01/2010, à 13:25
- Sepu
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
Je n'ai pas réussi à faire ce que je voulais donc j'ai changé d'IDE et cela fonctionne avec codeblock
Hors ligne
#8 Le 24/01/2010, à 18:09
- lazari
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
okay, je veux bien modifier mon "makefile" mais je sais pas comment ni ou le faire.
1- tu crée un projet C generic
2- tu met ton code dans le fichier main.c
3- tu modifi ton Makefile present dans le dossier src de ton projet comme ceci:
AM_CFLAGS = \
-Wall\
-g
MyProjet_SOURCES = \
main.c
MyProjet_LDFLAGS = -lm // -----------> liaison de la lib math
MyProjet_LDADD =
.
.
.
MyProjet est le nom de ton projet
tu enregistre lesmodifs et tu compile ( F11)
moi j'utilise Anjuta 2.4.1 sous ubunto 8.04.
voici une introduction à makefile http://gl.developpez.com/tutoriel/outil/makefile/
Hors ligne
#9 Le 24/01/2010, à 19:33
- mika
Re : [C] Anjuta: execution impossible du projet, probleme avec math.h
De mémoire codeblock génère pas de makefile. Quitte à choisir entre les deux, garde anjuta.
Pinard m'a tueR (in vino veritas ?)
Cherche logiciel pour tagger ses vinyles.
Hors ligne